美好的一天!
我正在使用Microsoft Contoso BI Demo Dataset for Retail Industry数据库@ https://www.microsoft.com/en-us/download/confirmation.aspx?id=18279,我使用sqoop作为bzip2 csv文件提取到Azure Data Lake" \ t" -delimited
然后我使用Spark over Scala将这些文件转换为Parquet,如下所示:
Thread.CurrentPrincipal.Identity
但是,似乎因为BinaryType列Geometry我得到了异常:引起:java.lang.RuntimeException:不支持的类型:binary
虽然这在PySpark中完全正常。我是否缺少在Scala中设置/启用选项来处理带有二进制数据作为列之一的csv?
完全例外:
//-------DimGeography-------
val schemaDimGeography=StructType(Array(StructField("GeographyKey",IntegerType,false),StructField("GeographyType",StringType,false),StructField("ContinentName",StringType,false),StructField("CityName",StringType,true),StructField("StateProvinceName",StringType,true),StructField("RegionCountryName",StringType,true),StructField("Geometry",BinaryType,true),StructField("ETLLoadID",IntegerType,true),StructField("LoadDate",TimestampType,true),StructField("UpdateDate",TimestampType,true)));
val dfDimGeography= spark.
read.format("com.databricks.spark.csv").
option("header", "false").
option("nullValue", "null").
option("delimiter", "\t").
schema(schemaDimGeography).
load("adl://yvtazuredatalakestore.azuredatalakestore.net/clusters/yvthdisqoop/ContosoRetailDW/Full/Bzip2/DimGeography/*.bz2");
//dfDimGeography.show();
dfDimGeography.write.mode("overwrite").parquet("adl://yvtazuredatalakestore.azuredatalakestore.net/clusters/yvthdisqoop/ContosoRetailDW/Full/Parquet2/DimGeography/");
答案 0 :(得分:1)
BinaryType
根本不支持csv
数据源(Java,Scala,Python,R)。 The supported types are:
ByteType | ShortType | IntegerType | LongType | FloatType |
DoubleType | BooleanType |DecimalType | TimestampType |
DateType | StringType
您必须手动解析此数据。