hiveで普通にtsvをloadする
- tsvデータをhdfsにおく
- hiveからload data でinsertする。
- hiveのtableは最も効率(処理、空間)が悪いっぽい textformat
- and sequencefile
7.84 MB 2016/7/26 10:58:24 3 128 MB sample.tsv
9.07 MB 2016/7/26 12:22:09 2 128 MB 000000_0
した場合
- textformatの場合、tsvがそのまま, hiveのtable dataになる。
- 非圧縮でのsequence fileの場合、当然、元データサイズと同じくらいになる、
spark sql data frameのsaveAsTableでtable作成、insertをした場合
-
tsvをtextFileで読み込み、caseクラスでRow型に変換して、toDFでdataframeに変換して、saveAsTableでhive tableとして保存する。
-
オプション設定はなし、default
175.17 KB 2016/7/26 11:27:47 2 128 MB part-r-00000-3261acea-9b2b-495a-8db5-8f81cef47ca1.gz.parquet
171.1 KB 2016/7/26 11:27:47 2 128 MB part-r-00001-3261acea-9b2b-495a-8db5-8f81cef47ca1.gz.parquet
の場合
- gz.parquet suffixのfileが2つ生成
- サイズ、suffixからgz圧縮+parquet format
show create tableの表示からも確認
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='false',
'EXTERNAL'='FALSE',
'numFiles'='2',
'numRows'='-1',
'rawDataSize'='-1',
'spark.sql.sources.provider'='org.apache.spark.sql.parquet',
'spark.sql.sources.schema.numParts'='1',
snappy codec オプションを指定した場合
- sqlContext.setConfで
sqlContext.setConf("spark.sql.parquet.compression.codec", "snappy")
sqlContext.setConf("parquet.compression", "SNAPPY")
でsaveAsTableで保存した場合
235.3 KB 2016/7/26 11:19:10 2 128 MB part-r-00000-5d10d91c-d05d-4be6-9c40-d6c7db9c56cc.snappy.parquet
228.73 KB 2016/7/26 11:19:07 2 128 MB part-r-00001-5d10d91c-d05d-4be6-9c40-d6c7db9c56cc.snappy.parquet
- snappy + parquetで保存される。
- ↓のshow create table の結果でもわかる。
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
'spark.hadoop.mapred.output.compress'='true',
'spark.hadoop.mapred.output.compression.codec'='org.apache.hadoop.io.compress.SnappyCodec',
'spark.hadoop.mapred.output.compression.type'='BLOCK')
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='false',
'EXTERNAL'='FALSE',
'numFiles'='2',
'numRows'='-1',
'rawDataSize'='-1',
'spark.sql.sources.provider'='org.apache.spark.sql.parquet',
'spark.sql.sources.schema.numParts'='1',