全部产品
云市场

使用temp表进行数据分析

更新时间:2018-10-14 19:30:28

Temp表使用背景

  • 在Data Lake Analytics做数据分析前,往往需要先建表。但是对于某些固定场景下,这些表往往只需要查询1次,为了省去繁琐的建表工作,我们提供了temp表的功能。

操作示例

  1. 查询一个临时表的数据

    1. SELECT * FROM
    2. TABLE temp_1
    3. (
    4. id INT,
    5. name STRING,
    6. location STRING,
    7. create_date DATE,
    8. create_timestamp TIMESTAMP,
    9. longitude DOUBLE,
    10. latitude DOUBLE
    11. )
    12. ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
    13. STORED AS TEXTFILE LOCATION 'oss://mybucket102/file.txt'

    等同于

    1. CREATE EXTERNAL TABLE temp_1 (
    2. id INT,
    3. name STRING,
    4. location STRING,
    5. create_date DATE,
    6. create_timestamp TIMESTAMP,
    7. longitude DOUBLE,
    8. latitude DOUBLE
    9. )
    10. ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
    11. STORED AS TEXTFILE LOCATION 'oss://mybucket102/';
    12. ==再加上===
    13. select * from temp_1
  2. 多temp表join语法

    1. SELECT temp_1.col1, temp_2.smallint_col
    2. FROM
    3. TABLE temp_1
    4. (
    5. col1 int,
    6. col2 int
    7. )
    8. LOCATION 'oss://mybucket102/file1.txt';
    9. JOIN
    10. TABLE temp_2
    11. (
    12. id INT COMMENT 'default',
    13. bool_col BOOLEAN COMMENT 'default',
    14. tinyint_col TINYINT COMMENT 'default',
    15. smallint_col SMALLINT COMMENT 'default',
    16. int_col INT COMMENT 'default',
    17. bigint_col BIGINT COMMENT 'default',
    18. float_col FLOAT COMMENT 'default',
    19. double_col DOUBLE COMMENT 'default',
    20. date_string_col STRING COMMENT 'default',
    21. string_col STRING COMMENT 'default',
    22. timestamp_col TIMESTAMP COMMENT 'default'
    23. )
    24. ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    25. WITH SERDEPROPERTIES ('field.delim'='|', 'serialization.format'='|')
    26. STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
    27. OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    28. LOCATION 'oss://mybucket102/file2.txt'
    29. TBLPROPERTIES ('recursive.directories'='false')
    30. ON temp_1.col1 = temp_2.id
    31. WHERE temp_2.bool_col = true;

    通过上述SQL可以直接访问OSS中的数据,无需提前建表,非常方便。