Apache spark 使用Spark中的数据类型map将数据帧写入csv
我有一个文件是file1snapy.parquet。它有一个复杂的数据结构,比如一个地图,里面有一个数组。经过处理,我得到了最终的结果。在将结果写入csv时,我得到了一些错误信息Apache spark 使用Spark中的数据类型map将数据帧写入csv,apache-spark,spark-dataframe,rdd,Apache Spark,Spark Dataframe,Rdd,我有一个文件是file1snapy.parquet。它有一个复杂的数据结构,比如一个地图,里面有一个数组。经过处理,我得到了最终的结果。在将结果写入csv时,我得到了一些错误信息 "Exception in thread "main" java.lang.UnsupportedOperationException: CSV data source does not support map<string,bigint> data type." 我试着将datadf.toString转
"Exception in thread "main" java.lang.UnsupportedOperationException: CSV data source does not support map<string,bigint> data type."
我试着将datadf.toString转换,但仍然面临同样的问题。
如何将结果写入CSV。Spark CSV源仅支持原子类型。不能存储任何非原子列
我认为最好是为具有map作为数据类型的列创建JSON,并将其保存在csv中,如下所示
import spark.implicits._
import org.apache.spark.sql.functions._
datadf.withColumn("column_name_with_map_type", to_json(struct($"column_name_with_map_type"))).write.csv("outputpath")
希望这有帮助 Spark CSV源仅支持原子类型。不能存储任何非原子列
我认为最好是为具有map作为数据类型的列创建JSON,并将其保存在csv中,如下所示
import spark.implicits._
import org.apache.spark.sql.functions._
datadf.withColumn("column_name_with_map_type", to_json(struct($"column_name_with_map_type"))).write.csv("outputpath")
希望这有帮助 您正在尝试保存的输出
datadf.select(col("neid"),sumaggr(col("marks")).as("sum")).filter(col("sum") =!= 0).show(false)
我猜这是一个错误,因为udf函数和所有的聚合都将徒劳,如果你这样做
所以我认为你想保存
datadf.select(col("neid"),sumaggr(col("marks")).as("sum")).filter(col("sum") =!= 0).show(false)
因此,您需要将其保存在新的dataframe变量中,并使用该变量进行保存
val finalDF = datadf.select(col("neid"),sumaggr(col("marks")).as("sum")).filter(col("sum") =!= 0)
finalDF.write.format("com.databricks.spark.csv").option("header", "true").save("C:\\myfile.csv")
您应该没事。您正在尝试保存的输出
datadf.select(col("neid"),sumaggr(col("marks")).as("sum")).filter(col("sum") =!= 0).show(false)
我猜这是一个错误,因为udf函数和所有的聚合都将徒劳,如果你这样做
所以我认为你想保存
datadf.select(col("neid"),sumaggr(col("marks")).as("sum")).filter(col("sum") =!= 0).show(false)
因此,您需要将其保存在新的dataframe变量中,并使用该变量进行保存
val finalDF = datadf.select(col("neid"),sumaggr(col("marks")).as("sum")).filter(col("sum") =!= 0)
finalDF.write.format("com.databricks.spark.csv").option("header", "true").save("C:\\myfile.csv")
您应该很好。您使用的spark版本是什么?spark版本2.1.1您使用的spark版本是什么?spark版本2.1.1表示$不是字符串Contextimport spark.implicits.\uImport org.apache.spark.sql.functions的成员。\导入spark.implicits时导入这两个。\表示找不到sparkval对象spark=SparkSession.builder.appNametest.masterlocal[*].GetorCreate如果您使用的是spark2.0+,则应使用SparkSession作为入口点,而不是SparkContextit。它表示$不是字符串Contextimport spark.implicits.的成员。\uImport org.apache.spark.sql.functions。\导入spark.implicits时导入这两个变量。\它表示找不到对象sparkval spark=SparkSession.builder.appNametest.masterlocal[*].GetOrCreate如果您使用的是spark2.0+,则应将SparkSession用作入口点,而不是SparkContext