为什么createDataFrame的推理程序不将此数据列创建为字符串?

2024-06-15 02:36:02 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码显示了如何构建数据帧。可以看出,数据帧由两列组成。每列在最后一行有整数和一个字符串。在

据我所知,createDataFrame必须分析列的数据类型(结果是以行为单位)。然后假设一个数据类型可以包含所有行。在本例中,我假设列必须是string数据类型,因为这种类型可以包括数字和字符串。在

因此,为什么生成的dataFrame包含长数据类型的列,而字符串是null的呢?在

# DataFrame construction:
b = sqlContext.createDataFrame([(1, 2),(2, 3), (3, 3), ('test0', 'test1')], ['pepe', 'pepa'], samplingRatio=1)
b.show()


#+----+----+
#|pepe|pepa|
#+----+----+
#|   1|   2|
#|   2|   3|
#|   3|   3|
#|null|null|
#+----+----+

{hen}决定在删除代码后运行相同的结果。你知道为什么会这样吗?在


Tags: 数据字符串代码类型dataframestring单位数字
1条回答
网友
1楼 · 发布于 2024-06-15 02:36:02

发生这种情况是因为当从本地数据结构创建DataFrame时,samplingRatio参数被完全忽略。It is used only if ^{} is a ^{}。否则,数据将转换为javardd,类型不匹配的对象将转换为null。在

如果传递RDD而不是list Spark,则会应用模式推理并引发异常,与Scala中的示例相同。这是因为Spark不支持混合类型,也不执行自动铸造。在

为什么inferSchema参数存在?它看起来像是从Python字典构建的RDDs上不推荐使用的推理的产物。但这只是一个疯狂的猜测。在

相关问题 更多 >