2016-10-21 3 views
2
나는 우리가

어떻게 스파크 SQL을 사용하여 분할 된 테이블을 만들 수 있습니다

CREATE TABLE my_table 
USING com.databricks.spark.avro 
OPTIONS (path "/path/to/table"); 

를 통해 자동 파티션 검색 테이블을 만들 수 있습니다 알고

그러나 이것은 형식을 PARTITION_KEY = partition_value에 데이터 경로를 변경할 필요

/path/to/table/dt=2016-10-09 
/path/to/table/dt=2016-10-10 
/path/to/table/dt=2016-10-11 

는하지만 데이터 구조는 보이는 같은 :

/path/to/table/2016-10-09 
/path/to/table/2016-10-10 
/path/to/table/2016-10-11 

기존의 데이터 구조를 변경하고 싶지 않으므로 하이브 (Hive) 방식처럼 파티션 테이블을 만든 다음이 파티션을 직접 추가 할 수 있으므로 기존 데이터를 변경할 필요가 없습니다. 구조를 partition_key = partition_value 형식으로 변경하십시오.

그러나 SQL 아래 작동하지 않았다 :

CREATE TABLE my_table 
USING com.databricks.spark.avro 
PARTITIONED BY (dt) 
OPTIONS (path "/path/to/table"); 

는 SQL 명령 줄 도구가 발생합니다 예외 : Error in query: cannot recognize input near 'thrive_event_pt' 'USING' 'com' in table name; line 2 pos 0

이 방법으로 분할 된 테이블을 만들 SQL 지원 스파크합니까? 아니면 제가 놓친 다른 것이 있습니까?

답변

0

아마 이것은 아직 스파크에서 지원되지 않습니다. 필자는 AVRO 파일과 Spark 2.0이 포함 된 양동이 테이블에서 ORC로 변환 된 다음 동일한 문제를 겪었습니다. 따라서 AVRO 대신 기본 ORC 파일을 사용해보십시오. "현재"의 ORC 파일을 사용하고 예를 들어 "보관함"에 AVRO 파일을 사용하십시오.

Bucketing 및 Partitioning은 Spark (SQL)에서 상당히 새로운 기능입니다. 어쩌면 그들은 미래에이 기능을 지원할 것입니다. Hive 이전의 초기 버전 (2.x 이하)조차도 버킷 팅과 테이블 생성을 둘러싼 모든 것을 지원하지 않습니다. 반면에 파티션은 하이브에서 더 진화 된 것입니다.

관련 문제