下面的代码显示了如何构建数据帧。可以看出,数据帧由两列组成。每列在最后一行有整数和一个字符串。在
据我所知,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}决定在删除代码后运行相同的结果。你知道为什么会这样吗?在
发生这种情况是因为当从本地数据结构创建} is a ^{} 。否则,数据将转换为javardd,类型不匹配的对象将转换为null。在
DataFrame
时,samplingRatio
参数被完全忽略。It is used only if ^{如果传递
RDD
而不是list Spark,则会应用模式推理并引发异常,与Scala中的示例相同。这是因为Spark不支持混合类型,也不执行自动铸造。在为什么
inferSchema
参数存在?它看起来像是从Python字典构建的RDDs
上不推荐使用的推理的产物。但这只是一个疯狂的猜测。在相关问题 更多 >
编程相关推荐