Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么createDataFrame的推断器不';是否将此数据作为字符串创建列?_Python_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Python 为什么createDataFrame的推断器不';是否将此数据作为字符串创建列?

Python 为什么createDataFrame的推断器不';是否将此数据作为字符串创建列?,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,下面的代码显示了如何构建数据帧。可以看出,dataframe由两列组成。每列的最后一行都有整数和字符串 据我所知,我必须分析列的数据类型(结果是行)。然后,假设一个数据类型可以包含所有行。在这种情况下,我假设列必须是字符串数据类型,因为这种类型可以包括数字和字符串 因此,为什么生成的数据帧具有长数据类型的列,而字符串为空 # DataFrame construction: b = sqlContext.createDataFrame([(1, 2),(2, 3), (3, 3), ('test0

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

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

因此,为什么生成的数据帧具有长数据类型的列,而字符串为空

# 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|
#+----+----+

在@ccheneson的建议之后,我决定重新运行代码,删除参数
samplingario
,得到了完全相同的结果。你知道为什么会这样吗

这是因为当从本地数据结构创建
DataFrame
时,
samplinglatio
参数被完全忽略。否则,数据将转换为Java RDD,不匹配类型的对象将转换为空值

如果您传递的是
RDD
而不是list,Spark将应用模式推断并抛出异常,与Scala中的示例相同。这是因为Spark不支持混合类型,也不执行自动转换


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

如果您删除
采样,会发生什么情况?
?谢谢。我编辑我的问题,我包括结果。