impala创建外部表并删除双引号

问题描述 投票:0回答:1

例如,我以CSV格式获取数据:“女性”,“ 44”,“ 0”,“ 0”,“是”,“政府工作”,“城市”,“ 103.59”,“ 32.7”,“以前吸烟”

我把它和hdfs一起放在hdfs中

现在我想在impala上从它创建外部表(不在蜂巢中)有没有双引号的选项吗?

这是我通过impala-shell运行的内容:

CREATE EXTERNAL TABLE IF NOT EXISTS test_test.test1_ext
( `gender` STRING,`age` STRING,`hypertension` STRING,`heart_disease` STRING,`ever_married` STRING,`work_type` STRING,`Residence_type` STRING,`avg_glucose_level` STRING,`bmi` STRING,`smoking_status` STRING ) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION "/user/test/tmp/test1"

更新28.11

i设法通过创建外部对象,然后在concat()每个col的情况下创建一个SELECT来进行选择。

hive hdfs cloudera impala
1个回答
0
投票

Impala使用Hive元存储,因此在发布INVALIDATE METADATA dbname.tablename之后,Impala可以从Hive中创建任何内容。但是,要删除引号,您需要使用Hive Serde库'org.apache.hadoop.hive.serde2.OpenCSVSerde',而这不能从Impala访问。我的建议是执行以下操作:

  1. 在Hive中创建外部表如果不存在,则创建外部表test_test.test1_ext(gender STRING,age STRING,hypertension STRING,heart_disease STRING,ever_married STRING,work_type STRING,Residence_type STRING,avg_glucose_level STRING,bmi STRING,smoking_status STRING )行格式SERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde'与SERPROPERTIES(“ separatorChar” =“,”,“ quoteChar” =“ \”“)存储为文本文件位置“ / user / test / tmp / test1”

  2. 使用CTAS在Hive中创建托管表创建表mytable AS SELECT * FROM test_test.test1_ext;

  3. 使其在Impala中可用无效的METADATA db.mytable;

© www.soinside.com 2019 - 2024. All rights reserved.