在parquet文件上创建配置单元表失败了-我哪里出错了?

hgqdbh6s  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(403)

我正在把数据框保存到Parquet文件中。生成的架构如下所示:

org.apache.spark.sql.parquet.row.metadata{  
"type":"struct",
"fields":[  
  {  
     "name":"DCN",
     "type":"string",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"EDW_id",
     "type":"string",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"recievedTimestamp",
     "type":"string",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"recievedDate",
     "type":"date",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"rule",
     "type":"string",
     "nullable":true,
     "metadata":{}
  }
]}

Dataframe正在spark程序中生成;当我通过spark submit运行它并显示Dataframe时,我可以看到有几百条记录。我将df保存到Parquet地板上,如下所示:

df.write.format("parquet").mode(SaveMode.Overwrite).save('/home/my/location')

在配置单元中创建一个外部表,如下所示:

CREATE EXTERNAL TABLE schemaname.tablename (
  DCN STRING,
  EDW_ID STRING,
  RECIEVEDTIMESTAMP STRING,
  RECIEVEDDATE STRING,
  RULE STRING) 
STORED AS PARQUET
LOCATION '/home/my/location';

该表已成功创建,但未填充任何数据-当我查询它时,返回0条记录。有人能看出我做错了什么吗?这是使用Hive1.1和Spark1.6。

yhqotfr8

yhqotfr81#

配置单元需要jar文件来处理Parquet文件。
1.首先下载parquet-hive-bundle-1.5.0.jar
2.将jar路径包含到hive-site.xml中。

<property>
   <name>hive.jar.directory</name>
   <value>/home/hduser/hive/lib/parquet-hive-bundle-1.5.0.jar</value>
</property>
5cnsuln7

5cnsuln72#

配置单元元数据存储区不区分大小写,并以小写形式存储所有列名,其中as parquet按原样存储。尝试在相同的情况下重新创建配置单元表。

相关问题