Как настроить порядок столбцов в коннекторе искровой кассандры - PullRequest
0 голосов
/ 04 декабря 2018

В spark у меня есть некоторый фиксированный порядок данных:

agg_id,agg_key,agg_val,req_num,clk_num

Когда я создаю похожую таблицу в Кассандре, порядок неключевых столбцов не сохраняется:

CREATE TABLE mytable (
   agg_id int,
   agg_key int,
   agg_val text,
   req_num bigint,
   clk_num bigint,
 PRIMARY KEY ((agg_id,agg_key), agg_val )
) WITH CLUSTERING ORDER BY (agg_val asc)

Таккогда я запускаю desc mytable, он показывает мне неправильный порядок (сначала clk_num, а затем req_num)

Поэтому, когда работает следующий код, данные вставляются в неправильном порядке

ds.write
  .format("org.apache.spark.sql.cassandra")
  .options(Map(
    "keyspace" -> "online_aggregation",
    "table" -> cassOutTable) )
  .mode(SaveMode.Append)
  .save

Myвопрос, как я могу установить имена столбцов здесь?Могу ли я добавить некоторые свойства в опцию Карта?или немного измените код, чтобы он работал правильно.Одно ограничение - без изменений самого DF (он может быть выведен на несколько источников)

1 Ответ

0 голосов
/ 04 декабря 2018

Просто выберите столбцы в нужном порядке перед записью

ds
  .select("agg_id", "agg_key", ..., "clk_num")
  .write
  .format("org.apache.spark.sql.cassandra")
  .options(Map(
    "keyspace" -> "online_aggregation",
    "table" -> cassOutTable) )
  .mode(SaveMode.Append)
  .save
...