私はパンダの背景から来ており、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)
これは基本的に変数を2回定義し、最初にスキーマを推論してから列名を変更し、更新されたスキーマでデータフレームを再度ロードします。
私たちがパンダのようにこれを行うためのより良い、より効率的な方法はありますか?
私のスパークバージョンは1.5.0です
for
ループ+withColumnRenamed
でそれをやったが、あなたのreduce
オプションはとてもいい:)