데이터 소스로 Cassandra (3.9)와 함께 Spark 2.1을 사용하고 있습니다. C *에는 50 개 열이있는 큰 테이블이 있는데 이는 유스 케이스의 좋은 데이터 모델이 아닙니다. 그래서 나는 각 센서에 대한 분할 테이블을 파티션 키와 클러스터링 키 열과 함께 만들었습니다.스파크 하나의 데이터 프레임에서 여러 데이터 프레임을 만듭니다.
All sensor table
-----------------------------------------------------
| Device | Time | Sensor1 | Sensor2 | Sensor3 |
| dev1 | 1507436000 | 50.3 | 1 | 1 |
| dev2 | 1507436100 | 90.2 | 0 | 1 |
| dev1 | 1507436100 | 28.1 | 1 | 1 |
-----------------------------------------------------
Sensor1 table
-------------------------------
| Device | Time | value |
| dev1 | 1507436000 | 50.3 |
| dev2 | 1507436100 | 90.2 |
| dev1 | 1507436100 | 28.1 |
-------------------------------
이제 spark를 사용하여 이전 테이블의 데이터를 새로운 테이블로 복사합니다.
df = spark.read\
.format("org.apache.spark.sql.cassandra")\
.options(table="allsensortables", keyspace="dataks")\
.load().cache()
df.createOrReplaceTempView("data")
query = ('''select device,time,sensor1 as value from data ''')
vgDF = spark.sql(query)
vgDF.write\
.format("org.apache.spark.sql.cassandra")\
.mode('append')\
.options(table="sensor1", keyspace="dataks")\
.save()
하나의 테이블에 대해 하나씩 데이터를 복사하는 데 많은 시간 (2.1) 시간이 소요됩니다. 내가 할 수있는 방법이있다 select *
및 각 센서에 대한 여러 df를 만들고 한 번에 저장? (또는 순차적으로). 코드에서
어떻게 spark-shell 명령을 사용하여 코드를 실행하고 있습니까 ?? –
@Vijay_Shinde using spark-submit – Junaid
Ok @Junaid, 드라이버 메모리 및 실행 프로그램 메모리를 늘려보십시오. 그것은 당신을 도울 것입니다. –