2016-07-21 4 views
1

Amazon Elastic Map Reduce 4.7.1, Hadoop 2.7.2, Hive 1.0.0 및 Spark 1.6.1을 사용하고 있습니다.EMR에서 Spark를 사용하여 하이브 Metastore에 S3 마루 파일을 등록하는 방법

사용 사례 : 데이터 처리에 사용되는 스파크 클러스터가 있습니다. 이 데이터는 Parquet 파일로 S3에 저장됩니다. 도구가스타일이 아닌 foo 테이블을 찾는 것과 같이 하이브 Metastore에 등록 된 이름을 사용하여 데이터를 쿼리 할 수 ​​있기를 바랍니다. 또한 EMR 클러스터를 해체하고 동일한 Metastore에 연결된 새 클러스터를 시작하더라도이 데이터를 Hive Metastore (별도 RDS 인스턴스)의 수명 동안 유지해야합니다.

문제점 : 기본적으로 하이브 메타 스토어 (https://spark.apache.org/docs/latest/sql-programming-guide.html 참조)에서 관리되는 테이블을 생성하는 sqlContext.saveAsTable("foo")과 같은 작업을 수행합니다. 이러한 관리 테이블은 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

아테나는 HIPAA와 호환되지 않습니다. –

+0

전체 AWS 서비스가 HIPAA와 호환되지 않습니다. . 그가 AWS에서 EMR과 Hive를 사용한다면 기본적으로 하이브 테이블 작업을 담당하는 Presto 엔진 인 Athena를 사용할 수도 있습니다. –

+0

정확하지 않습니다. HIPAA 설명서는 https://aws.amazon.com/compliance/hipaa-compliance/에서 확인할 수 있습니다. –

관련 문제