web-dev-qa-db-ja.com

列名なしでcsvファイルから読み取ったデータに列名を追加します

私はScalaでApache Sparkを使用しています。

最初の行に列名がないcsvファイルがあります。こんな感じです:

28,Martok,49,476
29,Nog,48,364
30,Keiko,50,175
31,Miles,39,161

列はID、名前、年齢、numOfFriendsを表します。

私のScalaオブジェクトでは、次のようにcsvファイルからSparkSessionを使用してデータセットを作成しています。

val spark = SparkSession.builder.master("local[*]").getOrCreate()
val df = spark.read.option("inferSchema","true").csv("../myfile.csv")
df.printSchema()

プログラムを実行すると、結果は次のようになります。

|-- _c0: integer (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: integer (nullable = true)
|-- _c3: integer (nullable = true)

データセットの列に名前を追加するにはどうすればよいですか?

6
Placid

toDFを使用して、CSVファイルを読み取るときに列名を指定できます。

val df = spark.read.option("inferSchema","true").csv("../myfile.csv").toDF(
  "ID", "name", "age", "numOfFriends"
)

または、すでにDataFrameを作成している場合は、次のように列の名前を変更できます。

val newColNames = Seq("ID", "name", "age", "numOfFriends")
val df2 = df.toDF(newColNames: _*)
16
Leo C