2

Spark SQL を使用して、Cassandra データベースからデータを取得しました。

DataFrame customers = sqlContext.cassandraSql("SELECT email, first_name, last_name FROM customer " +
                "WHERE CAST(store_id as string) = '" + storeId + "'");

その後、いくつかのフィルタリングを行い、このデータを次のような別の Cassandra テーブルに保存したいと考えています。

store_id uuid,
report_name text,
report_time timestamp,
sharder int,
customer_email text,
count int static,
firts_name text,
last_name text,
PRIMARY KEY ((store_id, report_name, report_time, sharder), customer_email)

DataFrameを新しいテーブルに保存するときに、これらの追加のプロパティを追加するにはどうすればよいですか? また、この例を使用して Cassandra の長い行を分割するベスト プラクティスは何ですか? には 4,000 ~ 6,000 のレコードがあると予想されるDataFrameため、長い行をシャーディングすることは必須ですが、レコードを数えてsharder特定の数のアイテムの を変更することが、Spark または Cassandra でのベスト プラクティスであるかどうかはわかりません。

4

2 に答える 2

3

DataFrame を取得したら、プロパティが追加された新しいスキーマの構造を持つケース クラスを定義できます。

次のようにケース クラスを作成できます。case class DataFrameRecord(property1: String, property2: Long, property3: String, property4: Double)

次に、case クラスを使用して map を使用して新しい構造に変換できます。df.rdd.map(p => DataFrameRecord(prop1, prop2, prop3, prop4)).toDF()

于 2015-11-13T13:57:15.443 に答える