HiveQLを使ってテーブル作成 & データ投入


Prestoを使って性能試験しようとしている。
HiveQLを使ってテーブル作成 & データ投入実施。
試行錯誤した。


圧縮ファイル解凍

投入データは作成済みだったので、 データ投入出来るように解凍。 https://qiita.com/supersaiakujin/items/c6b54e9add21d375161f


シンプルに、

テーブル作成 & データロード

https://open-groove.net/hive/hive-dataload-tips/


テーブル作成

https://qiita.com/yskazuma/items/db543d45d32013cfcbb9

適切なファイルフォーマットと圧縮形式を選ぶ 単純にクエリを最適化したいなら個人的にはフォーマットにORC、圧縮形式にZlibの組み合わせを使うのが無難ではないかと思います。 ただし、EMR5.0系の上でHiveを動かす場合はORCだと遅くなるとの事ですので代わりにフォーマットにParquet、圧縮形式にGZipの組み合わせを使うと良いです。


テキスト形式テーブル → Parquet File Format テーブル にデータ移行

https://community.hortonworks.com/questions/53329/stored-data-from-csv-into-a-parquet-file-and-expor.html


OK


次は、パーティションを利用したい。


パーティションの設定方法

https://open-groove.net/hive/hive-partition/


うまくいかず。


以下のエラー

FAILD: SemanticException [Error 10096]: Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict

設定変更が必要そう。 https://community.hortonworks.com/questions/87209/oozie-workflow-error-2.html


https://tagomoris.hatenablog.com/entry/20141114/1415938647

簡単に言うと year=INT/month=INT/day=INT というパーティション階層になっているテーブルにINSERTするとき、month と day をSELECT句から取り出したい場合には、以下のようにクエリを書かなければならない。


hiveの設定変更。nonstrict

https://blog.amedama.jp/entry/2018/01/03/051818

hive> SET hive.exec.dynamic.partition=true;
hive> SET hive.exec.dynamic.partition.mode=nonstrict;


解決。