2017-07-18 1 views
0

現在、S3に格納されているcsvを読み込もうとしています。 CSVにヘッダ行が含まれていません。私のようにそれを読んでみてくださいスパーク2.0.0以上、spark.csvメソッドの名前リストを提供

については

df = spark.read.csv("path_to_csv") 

は、今は、このよう私に列名を与える:

_c0, _c1 , _c2 , ... 

によって方法はあります上記の関数で列名を指定できますか? パンダでは、引数name=['col1','col2',...]を使用できます。ここで何か似たものがありますか?

PS:私の最初の考えは、spark.read.csvメソッドがここで助けになる引数を持っていないように見えるので、CSVとしてそれを読んでからカラムを処理することです。私は考えることができる

+0

つのポストプロセスソリューションは、 'new_df = df.toDF( "COL1"、 "COL2" であります..) ' –

+0

あなたは次のようなものを試しましたか?df2 = df.withColumnRenamed(" _c0 "、" NewName1 ").ColumnRenamed(" _ c1 "、" NewName2 ") – tbone

+0

@tboneはい試してみました。私がそれを好まない理由は、これはすべての列に対してこのメ​​ソッドを呼び出す必要があるからです。私にとっては、この方法は完全なリストではなく、単一の列の変更に適しているようです。私は今、 'read()'メソッドで列名を直接提供するgithubに関する機能要求があるかどうかを調べようとしています。 –

答えて

0

あなたはこの

from pyspark.sql.types import StructType, StructField, StringType 

を試すことができますが、独自のスキーマを作成することができます

schema = StructType([StructField("X", StringType(), True), StructField("Y", StringType(), True)]) 



df = spark.read.csv("path to csv",header=False,schema=schema) 
+0

スパーク推論スキーマを私に教える方法はありますか?それを試してみましたが効果はありますが、各列のデータ型を明示的に指定する必要があります。 –

+0

inferSchema = 'true'これをoption.butで指定することはできますが、スキーマは正しく推論されていないようですが、 –

関連する問題