[英]Python spark : How to parellelize Spark Dataframe compute using spark in databricks
[英]How to handle NullType in Spark Dataframe using Python?
我正在嘗試將MapR DB中的數據加載到Spark DF中。 然后,我只是想將DF導出到CSV文件。 但是,我得到的錯誤是:
“ com.mapr.db.spark.exceptions.SchemaMappingException:無法解析數據類型為NullType的值(當前令牌:STRING)”
我通過將列強制轉換為StringType嘗試了幾種方法。 這是其中之一:
df = spark.loadFromMapRDB(db_table).select(
F.col('c_002.v_22').cast(T.StringType()).alias('aaa'),
F.col('c_002.v_23').cast(T.StringType()).alias('bbb')
)
print(df.printSchema())
PrintSchema的輸出:
root
|-- aaa: string (nullable = true)
|-- bbb: string (nullable = true)
“ aaa”和“ bbb”列中的值可以為空。 然后,我嘗試將df導出到CSV文件:
df = df.repartition(10)
df.write.csv(csvFile, compression='gzip', mode='overwrite', sep=',', header='true', quoteAll='true')
我在使用MapR-DB JSON表時遇到了類似的問題,並且能夠通過在加載到DataFrame中時定義表架構來解決:
tableSchema = StructType([
StructField("c_002.v_22", StringType(), True), # True here signifies nullable: https://spark.apache.org/docs/2.3.1/api/python/pyspark.sql.html?highlight=structfield#pyspark.sql.types.StructField
StructField("c_002.v_23", StringType(), True),
])
df = spark.loadFromMapRDB(db_table, tableSchema ).select(
F.col('c_002.v_22').alias('aaa'),
F.col('c_002.v_23').alias('bbb')
)
您可以嘗試做的另一件事就是簡單地用一些東西填充空值: https : //spark.apache.org/docs/2.3.1/api/python/pyspark.sql.html#pyspark.sql.DataFrame.fillna
df = df.na.fill('null')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.