我来自熊猫背景,习惯于将 CSV 文件中的数据读取到数据框中,然后使用简单的命令将列名更改为有用的名称:
df.columns = new_column_name_list
但是,这在使用 sqlContext 创建的 PySpark 数据帧中不起作用。我能想到的唯一解决方案是:
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt")
oldSchema = df.schema
for i,k in enumerate(oldSchema.fields):
k.name = new_column_name_list[i]
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema)
这基本上是两次定义变量并首先推断架构,然后重命名列名,然后使用更新的架构再次加载数据框。
有没有更好、更有效的方法来做到这一点,就像我们在 pandas 中所做的那样?
我的 Spark 版本是 1.5.0
原文由 Shubhanshu Mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议
有很多方法可以做到这一点:
xrange
替换为range
。DataFrames
上使用 SQL 查询。