将多个转换应用于 apache RDD 的最佳方法是什么?

what is the best approach to apply multiple transformations to an apache RDD?

我有包含大量或 ndline json 数据的大文件。我正在尝试使用气流处理 EMR 集群中的这些文件以获取一组新文件。我应该在 EMR 中使用多个步骤还是在一个 pyspark 脚本中进行所有处理并只向 EMR 发送一个步骤?

这是一个例子:

数据文件:

{"key": {"nested_key": "value"}}
{"key": {"nested_key": "value2"}}

结果文件:

{"nested_key": "value", "nested_hashed": hashed_value}
{"nested_key": "value2",  "nested_hashed": hashed_value2}

pyspark 代码

def flatenize(data):
     data = json.loads(data)
     return json.dumps(data['key'])

def hash_data(data):
     data = json.loads(data)
     data['nested_hashed'] = hash(data['nested_key'])
     return json.dumps(data)

def main()
    sparkccontext = pyspark.SparkContext(master='local[4]', appName='test')
    input = args.input_files
    output = args.output_files

    rdd = sparkccontext.textFile(input)
    flatrdd = rdd.map(flatenize)
    output_rdd = flatrdd.map(hash_data)
    output_rdd.saveAsTextFile(output)

运行 这 2 个地图在 2 个单独的脚本中会更好吗?

看来最好的方法是像这样链接所有操作:

output_rdd = flatrdd.map(flatenize).map(hash_data)