我想加載一個文件到spark。 如果我加載正常TEXTFILE到火花象下面這樣:如何將模式添加到Spark中的數據集?
val partFile = spark.read.textFile("hdfs://quickstart:8020/user/cloudera/partfile")
的結果是:
partFile: org.apache.spark.sql.Dataset[String] = [value: string]
我可以看到在輸出的數據集。但是,如果我加載一個JSON文件:
val pfile = spark.read.json("hdfs://quickstart:8020/user/cloudera/pjson")
結果是一個現成的模式的數據幀:
pfile: org.apache.spark.sql.DataFrame = [address: struct<city: string, state: string>, age: bigint ... 1 more field]
將JSON /拼花/獸人文件具有架構。所以我可以理解這是Spark版本中的一個特性:2x,這使得事情變得更加簡單,因爲在這種情況下我們直接獲取DataFrame,而對於普通textFile,您可以在沒有任何合理模式的情況下獲得數據集。 我想知道的是,如何將模式添加到作爲將文本文件加載到spark中的結果的數據集中。對於RDD,有case/StructType選項來添加模式並將其轉換爲DataFrame。 任何人都可以讓我知道我該怎麼做?
,我不得不調整它一下。根據分隔符分割數據集:val partdata = partFile.map(p => p.split(「,」)) 我也必須更改此語句:val prdt = partdata.map {line => rows(line 0).toInt,line(1).toString,line(2).toInt,line(3).toString,line(4).toString)} 因爲非數字數據是'char'格式,而且我有將它們轉換爲'String'。它正在工作。 – Sidhartha
@Sidhartha,很高興知道它的工作。如果它是一個逗號分隔的文件,你可以考慮我使用'spark.read.csv'的第一個建議,它可能會更簡單。 –