我想把熊猫DF变成火花一号。 测向头:
10000001,1,0,1,12:35,OK,10002,1,0,9,f,NA,24,24,0,3,9,0,0,1,1,0,0,4,543
10000001,2,0,1,12:36,OK,10002,1,0,9,f,NA,24,24,0,3,9,2,1,1,3,1,3,2,611
10000002,1,0,4,12:19,PA,10003,1,1,7,f,NA,74,74,0,2,15,2,0,2,3,1,2,2,691
代码:
dataset = pd.read_csv("data/AS/test_v2.csv")
sc = SparkContext(conf=conf)
sqlCtx = SQLContext(sc)
sdf = sqlCtx.createDataFrame(dataset)
我犯了个错误:
TypeError: Can not merge type <class 'pyspark.sql.types.StringType'> and <class 'pyspark.sql.types.DoubleType'>
通过按如下方式应用架构可以避免与类型相关的错误:
注意:创建了一个文本文件(test.csv),其中包含原始数据(如上所述),并插入了假设的列名(“col1”、“col2”…、“col25”)。
熊猫数据框的内容:
接下来,创建架构:
注意:
True
(表示允许为空)创建pyspark数据帧:
确认pandas数据帧现在是pyspark数据帧:
输出:
旁边:
要处理凯特在下面的评论-要强制使用通用(字符串)架构,可以执行以下操作:
我做了这个算法,它对我的10个熊猫数据帧起作用
你也可以在这个gist中看到
有了这个,你只需要调用
spark_df = pandas_to_spark(pandas_df)
您需要确保pandas数据帧列适合spark所推断的类型。如果pandas数据框中列出了如下内容:
你会犯错误的,试试:
现在,确保
.astype(str)
实际上是您希望这些列成为的类型。基本上,当底层Java代码试图从python中的一个对象推断类型时,它使用一些观察结果并进行猜测,如果这种猜测不适用于列中的所有数据,那么它试图从panda转换为spark,这将失败。相关问题 更多 >
编程相关推荐