2016-07-21 5 views
1

Amazon Elastic Map Reduce 4.7.1、Hadoop 2.7.2、Hive 1.0.0、およびSpark 1.6.1を使用しています。EMarkでSparkを使用してハイブメタストアにS3パーケットファイルを登録する方法

使用例:データ処理に使用するSparkクラスタがあります。そのデータは、ParquetファイルとしてS3に格納されます。私はツールがHive Metastoreに登録されている名前を使用してデータを照会できるようにしたいと考えています(例えば、テーブルを参照するのはparquet.`s3://bucket/key/prefix/foo/parquet`のやり方です)。また、EMRクラスターを解体して同じMetastoreに接続された新しいデータベースをスピンアップしても、このデータをHive Metastore(別のRDSインスタンス)の存続期間中存続させたいと思います。

問題:sqlContext.saveAsTable("foo")のようなものを実行すると、デフォルトでHive Metastore(https://spark.apache.org/docs/latest/sql-programming-guide.htmlを参照)に管理対象テーブルが作成されます。これらの管理対象テーブルは、S3からEMRクラスタ上のHDFSにデータをコピーします。つまり、EMRクラスタを破棄してもメタデータは役に立たなくなります。

答えて

2

解決策は、外部ファイルとしてS3ファイルを登録することでした。

sqlContext.createExternalTable("foo", "s3://bucket/key/prefix/foo/parquet")

私はS3にファイルを保存し、すべてのワンショットに外部表として登録する方法を考え出したていないが、あまりにも多くのオーバーヘッドをcreateExternalTable追加しません。

1

これにはEMRは必要ありません。 Athenaを起動して、Parquet形式のデータを読み込むテーブルを作成します。これは、EMRよりはるかに安価なオプションであり、持続可能でもあります。 JDBCを使用して、リアルタイムでAthena経由でこのデータにアクセスできます。

+0

残念ながら、AthenaはHIPAAに準拠していません –

+0

AWSサービス全体がHIPAAに準拠していません! 。彼がAWSでEMRとHiveを使用している場合は、基本的にはハイブテーブルを扱うPrestoエンジンであるAthenaを使用することもできます。 –

+0

これは正確ではありません。 HIPAAのドキュメントはhttps://aws.amazon.com/compliance/hipaa-compliance/でご覧いただけます。 –

関連する問題