【问题标题】:Apache Drill - creating own table by CTASApache Drill - 通过 CTAS 创建自己的表
【发布时间】:2016-04-08 07:37:01
【问题描述】:

CTAS 的命令是:CREATE TABLE new_table_name AS <query>;
但是,在创建表之前,我必须创建模式。我做不到,而且我不能使用现有架构,因为对于每个已安装的架构,我都会收到错误:
schema cp is immutable。因此解决方案是创建新模式。问题是我找不到该命令的任何示例。

【问题讨论】:

  • Drill docs 非常简单,并且有示例。你检查了吗?
  • 是的,但首先我必须创建架构。在您的链接中没有它。
  • 这里的架构是什么意思?他们清楚地提到 - 您只能在工作区中创建新表。您不能在其他存储插件(例如 Hive 和 HBase)中创建表。 这里的表意味着您可以创建 json、csv 或 parquet 文件
  • 你在哪个数据库上查询,你想在哪里建表?
  • CREATE TABLE new_table_name AS (SELECT * FROM hive.mytable)。它返回 cp 是不可变的错误(并且对于每个现有模式都相同)。你能帮我说一下:是否可以将整个配置单元表缓存到内存中以提高性能。现在,它太慢了。

标签: apache apache-drill


【解决方案1】:

使用 CTAS,根据docs,您只能在工作区中创建新表。您不能在 Hive 和 HBase 等其他存储插件中创建表。

您可以将表数据存储为以下三种格式之一:

  • csv
  • 镶木地板
  • json

使用 CTAS 创建表的步骤:

  1. 设置store.format:

    alter session set `store.format`='json'; 
    
  2. 设置创建表的位置(最好调用文件):

    转到dfs插件:http://localhost:8047/storage/dfs

    在“工作区”中,添加可写(可变)工作区。例如:

     "tmp": {
         "location": "/tmp",
          "writable": true,
           } 
    

    请注意"writable": true

  3. 使用工作区:

    use dfs.tmp;
    
  4. 发射 CTAS 命令。例如:

    CREATE TABLE new_table_name AS (SELECT * FROM hive.mytable);
    

查看/tmp/abc目录,你会发现JSON文件。

【讨论】:

    【解决方案2】:

    您需要使用 dfs 或任何其他使用本地文件系统的存储插件。 例如:创建表 dfs.test.temp_count (user_count) as select t1.data as userParams from s3device.<File-Path> t1 limit 1

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多