我有一个带有地图字段的表格,其中的数据看起来像来自卡桑德拉的
test_id test_map
1 {tran_id=99, tran_type=sample}
我正在尝试将这些字段添加到现有的RDD中,并将这些数据作为新字段从其中拉至与如下所示完全相同的键,
test_id test_map tran_id tran_type
1 {tran_id=99, trantype=sample} 99 sample
我可以使用spark上下文将字段拉得很好,但是我找不到一个好方法来像上面预期的那样将该字段转换为RDD。
示例代码:
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
"