我正在使用Memsql :: Streamliner :: Transform(Python)实用程序。有一种必须覆盖的转换方法,以提供自定义转换功能。
def transform(self, sql_context, dataframe, logger):
dataframe.column[0]
是一个字节数组(JSON字符串)。
如何将字节数组转换为具有命名列的DataFrame?
目标:访问已转换的DataFrame中的各个列。
答案 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"])