我将火花流数据帧作为拼花文件写入HDFS中。我在该HDFS位置的顶部创建了配置单元表。 我的spark结构化流式写入命令如下:
parquet_frame.writeStream.option("compression", "none").option("latestFirst", "true").option("startingOffsets", "latest").option("checkpointLocation", "/user/ddd/openareacheckpoint_feb/").outputMode("append").trigger(Trigger.ProcessingTime("10 seconds")).partitionBy("dfo_data_dt").format("parquet").option("path", "hdfs://ddd/apps/hive/warehouse/ddddd.db/frg_drag/").start().awaitTermination()
如果我尝试从HIVE中读取数据,则双精度数据类型,字符串和BIGINT除外的INT数据类型都将为NULL。
但是我已经通过Spark Shell读取了相同的HDFS文件,并且正在获取生成的值而没有任何NULL。 Spark中的命令以读取镶木地板文件:
val pp = spark.read.parquet("hdfs://ddd/apps/hive/warehouse/ddddd.db/frg_drag/dfo_data_dt=20190225/")
pp.show
我在HIVE中的创建表语句如下:
CREATE TABLE `ddddd.frg_drag`(
`unit` string,
`pol` string,
`lop` string,
`gok` string,
`dfo_call_group` string,
`dfo_dfr` double,
`dfo_dfrs` double,
`dfo_dfrf` double,
`dfo_dfra` double,
`dfo_dfrgg` double,
`dfo_dfrqq` double,
`dfo_w_percent` double,
`dfo_afv_percent` double,
`dfo_endfd` double,
`dfo_time` timestamp,
`dfo_data_hour` int,
`dfo_data_minute` int)
PARTITIONED BY (
`dfo_data_dt` bigint)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
'hdfs://ddd/apps/hive/warehouse/ddddd.db/frg_drag'
TBLPROPERTIES (
'transient_lastDdlTime'='1551108381')
可以帮助我如何解决此问题。我是新来激发世界的人