0

データソースとしてCassandra(3.9)でSpark 2.1を使用しています。 C *は50列の大きなテーブルを持っていますが、これは私のユースケースにとっては良いデータモデルではありません。そこで私は、パーティションキーとクラスタリングキー列とともに、これらのセンサーのそれぞれに分割テーブルを作成しました。スパーク1つのデータフレームから複数のデータフレームを作成

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() 

1つ1つのテーブルに対して1つずつデータをコピーするのに多くの時間(2.1)時間がかかります。私はselect *できますし、各センサーの複数のdfを作成し、一度に保存する方法はありますか? (または順次)。コード内

+0

spark-shellコマンドを使用してコードをどのように実行していますか? –

+0

@Vijay_Shinde spark-submitを使用 – Junaid

+0

Ok @Junaid、ドライバのメモリとエグゼキュータのメモリを増やしてみてください。それはあなたを助けるでしょう。 –

答えて

0

1つの問題は、キャッシュここ

df = spark.read\ 
.format("org.apache.spark.sql.cassandra")\ 
.options(table="allsensortables", keyspace="dataks")\ 
.load().cache() 

私はDFが離れて保存から複数回使用されている方法を見ていないです。だからここのキャッシュは生産性が低い。あなたはデータを読み込み、それをフィルタリングし、それを別のcassandraテーブルに保存しています。現在、データフレーム上で唯一起こっていることは、セーブとそれ以外のことではありません。

ここにデータをキャッシュすることによる利点はありません。キャッシュを削除すると、速度が向上します。

複数のテーブルを順番に作成するには私は、partitionByを使用し、最初にHDFSに分割データw.r.tセンサーとしてデータを書き込んでから、それを再びcassandraに書き込むことを提案します。

+0

を使用して、キャッシュとテストを削除します。私はhdfsとpartitionByを試してみましょう。また、コネクタで利用可能なc *側のフィルタリングがありますが、私はそれがどのようにPythonで使用できるかわかりません。 selectが追加されている場合、objectには属性 'select'がありません。 https://github.com/datastax/spark-cassandra-connector/blob/master/doc/3_selection.md – Junaid

+0

はい、cassandraは述語のプッシュダウンを許可します。 libがPythonに存在するかどうかもわからない –

関連する問題