0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

spark sqlのdf.saveAsTableはdefaultでgz + parquetでdataは保存される。

Last updated at Posted at 2016-07-26

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', 
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?