簡體   English   中英

將RDD轉換為DataFrame PySpark時出錯

[英]Getting Error when convert RDD to DataFrame PySpark

我正在Apache Spark做一些研究,我面臨着一些非常奇怪的事情。 請參閱以下代碼:

ClimateRdd = ClimateRdd.map(lambda x: tuple(x))
print ClimateRdd.first()

這些命令返回給我這一行:( ('1743-11-01', '4.3839999999999995', '2.294', '\\xc3\\x85land')

然后我將其移動到這樣的dataFrame:

schemaDf = sqlContext.createDataFrame(ClimateRdd, schema)
schemaDf.registerTempTable('globalTemp')
result = sqlContext.sql("SELECT dt FROM globalTemp")
result.show(5)

這很完美,我得到了這個結果:

+----------+
|        dt|
+----------+
|1743-11-01|
|1743-12-01|
|1744-01-01|
|1744-02-01|
|1744-03-01|
+----------+
only showing top 5 rows

在我獲取查詢結果后,嘗試運行這些行:

dates = result.map(lambda x: "Datas: " + x.dt)
print dates.collect()

我有一個帶有此原因的java異常: Caused by: java.lang.IllegalStateException: Input row doesn't have expected number of values required by the schema. 4 fields are required while 5 values are provided. Caused by: java.lang.IllegalStateException: Input row doesn't have expected number of values required by the schema. 4 fields are required while 5 values are provided.

我做了很多研究,我發現問題是什么,我將我的第一部分代碼更改為:

ClimateRdd = ClimateRdd.map(lambda x: (x[0], x[1], x[2], x[3]))       

它奏效了!

那么關鍵是,為什么第一部分不起作用? 為什么我必須手動生成元組? 有沒有辦法動態創建這個元組?

問題是臟數據。 數據不在默認的拆分參數中。 那個問題就在那里。

當我進行元組轉換時,假設結構有4個字段,根據大部分數據。 但在一個特定的路線上,這不是真的。

這就是為什么我的數據幀在元組轉換中崩潰的原因。

這有點奇怪。 你為什么需要元組? 列表工作正常與地圖。

ClimateRdd.map(lambda x: [x[0], x[1], x[2], x[3]])       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM