Pyspark и Cassandra - извлечение данных в RDD как поля из поля карты - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть таблица с полем карты с данными, которые из Кассандры выглядят следующим образом,

test_id  test_map
1        {tran_id=99, tran_type=sample}

Я пытаюсь добавить эти поля к существующему СДР, из которого я извлекаю эти данные как новые поля к точно такому же ключу, который будет выглядеть следующим образом:

test_id  test_map                      tran_id  tran_type
1        {tran_id=99, trantype=sample} 99       sample

Я могу нормально извлекать поля, используя контекст искры, но я не могу найти хороший метод для преобразования этого поля в СДР, как ожидалось выше.

Пример кода:

import os 
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.datastax.spark:spark-cassandra-connector_2.11:2.3.0 --conf spark.cassandra.connection.host=xxx.xxx.xxx.xxx pyspark-shell'

sc = SparkContext("local", "test")
sqlContext = SQLContext(sc)

def test_df(keys_space_name, table_name):
    table_df = sqlContext.read\
        .format("org.apache.spark.sql.cassandra")\
        .options(table=table_name, keyspace=keys_space_name)\
        .load()
    return table_df

df_test = test_df("test", "test")

Затем для запроса данных я использую Spark SQL в таком формате:

df_test.registerTempTable("dftest")
df = sqlContext.sql(
    """
    select * from dftest
    "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...