【问题标题】:impala CREATE EXTERNAL TABLE and remove double quotesimpala CREATE EXTERNAL TABLE 并删除双引号
【发布时间】:2020-03-21 23:48:34
【问题描述】:

我得到了 CSV 上的数据,例如: "女性","44","0","0","Yes","Govt_job","Urban","103.59","32.7","曾吸烟"

我把它作为 hdfs 和 hdfs dfs put

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

这是我通过 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

我设法通过创建外部来做到这一点,然后在 concat() 每个列时创建一个带有 case 的 VIEW 作为选择。

【问题讨论】:

    标签: hive hdfs cloudera impala


    【解决方案1】:

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

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

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

    3. 使其在 Impala 中可用 无效元数据 db.mytable;

    【讨论】:

    • 通过这种方法,我需要创建包含所有数据的表。我的建议是在 impala 上创建 external ,然后在 concat() 每个 col 时创建带有 case 的视图。
    • 我的回答说你不能在 Impala 中使用 SERDE
    • 我的方法不需要使用 serde
    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 2020-02-08
    • 2018-10-24
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多