gpt4 book ai didi

python - 将 RDD 转换为 DataFrame PySpark 时出现错误

转载 作者:行者123 更新时间:2023-11-30 22:53:09 24 4
gpt4 key购买 nike

我正在 Apache Spark 中进行一些研究,但我遇到了一些非常奇怪的事情。请参阅下面的代码:

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

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

然后我将其移动到这样的数据帧:

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 异常:原因为:java.lang.IllegalStateException:输入行没有架构所需的预期值数。需要 4 个字段,同时提供 5 个值。

我做了很多研究,发现了问题所在,我将代码的第一部分更改为:

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

它成功了!

重点是,为什么第一部分不起作用?为什么我必须手动生成元组?有没有办法动态创建这个元组?

最佳答案

问题是脏数据。数据不在默认分割参数中。问题就在那里。

当我进行元组转换时,假设该结构有 4 个字段,与大部分数据一致。但在某一特定行,情况并非如此。

这就是我的数据帧在元组转换中崩溃的原因。

关于python - 将 RDD 转换为 DataFrame PySpark 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com