Memsql :: Streamliner Python Transform

时间:2016-04-13 18:19:43

标签: python pyspark spark-dataframe memsql

我正在使用Memsql :: Streamliner :: Transform(Python)实用程序。有一种必须覆盖的转换方法,以提供自定义转换功能。

def transform(self, sql_context, dataframe, logger):

dataframe.column[0]是一个字节数组(JSON字符串)。

如何将字节数组转换为具有命名列的DataFrame?

目标:访问已转换的DataFrame中的各个列。

1 个答案:

答案 0 :(得分:3)

您可以使用dataframe.rdd访问基础rdd并映射它以将每个字节字符串转换为包含列的列表。您可以通过将列列表作为createDataframe的第二个参数提供,将生成的rdd转换回具有命名列的数据框。

以下内容应该有效:

def parse(row):
   bytestring = row[0]
   json_data = convert_bytes_and_parse_json(bytestring)
   return [ json_data["mycolumn1"], json_data["mycolumn2"] ]

parsedRDD = dataframe.rdd.map(parse)
parsedDf = sql_context.createDataframe(parsedRDD, ["mycolumn1", "mycolumn2"])

# now you can access columns by name
parsedDf.select(parsedDf["mycolumn1"])