ablog

不器用で落着きのない技術者のメモ

PySpark から Parquet ファイル on HFDS にクエリを実行してみる

準備

  • EMRクラスターを作成する。
  • EMR のセキュリティグループで ssh でのアクセスを許可する。
  • マスターノードに ssh でログインする。
$ ssh -i ~/us-east-1.pem hadoop@ec2-**-***-**-**.compute-1.amazonaws.com
$ hadoop fs -mkdir /amazon-reviews-pds-az/
$ s3-dist-cp --src s3://amazon-reviews-pds/ --dest /amazon-reviews-pds-az/
  • コピーしたファイルを確認する。
$ hadoop fs -ls -h -R /amazon-reviews-pds-az

実行

  • 以下のコードを実行する。
from pyspark.sql.types import *

df = sqlContext.read.parquet("/amazon-reviews-pds-az/parquet/")
df.createOrReplaceTempView("reviews")

print sqlContext.sql("SELECT * FROM reviews where product_category == 'Books'").count()

備忘録

  • 全ノードで以下を実行する。
# echo 3 > /proc/sys/vm/drop_caches
$ free
$ iostat -tx 5 | awk '{print strftime("%y-%m-%d %H:%M:%S"), $0}'|grep xvdb > /home/hadoop/iostat-`hostname`-1.log &
  • パターン1
from pyspark.sql.types import *
df = sqlContext.read.parquet("/amazon-reviews-pds-az/parquet/")
df.createOrReplaceTempView("reviews")
print sqlContext.sql("SELECT * FROM reviews").count()
  • パターン2
from pyspark.sql.types import *
df = sqlContext.read.parquet("/amazon-reviews-pds-az/parquet/")
df.createOrReplaceTempView("reviews")
print sqlContext.sql("SELECT star_rating FROM reviews").count()