【发布时间】:2017-01-22 19:01:55
【问题描述】:
我正在从 S3 以 parquet 格式读取数据,然后我将此数据处理为 DataFrame。
问题是如何有效地迭代DataFrame 中的行?我知道collect 方法将数据加载到内存中,所以,虽然我的DataFrame 不大,但我宁愿避免将完整的数据集加载到内存中。我怎样才能优化给定的代码?
另外,我正在使用索引来访问DataFrame 中的列。我可以通过列名访问它们吗(我知道它们)?
DataFrame parquetFile = sqlContext.read().parquet("s3n://"+this.aws_bucket+"/"+this.aws_key_members);
parquetFile.registerTempTable("mydata");
DataFrame eventsRaw = sqlContext.sql("SELECT * FROM mydata");
Row[] rddRows = eventsRaw.collect();
for (int rowIdx = 0; rowIdx < rddRows.length; ++rowIdx)
{
Map<String, String> props = new HashMap<>();
props.put("field1", rddRows[rowIdx].get(0).toString());
props.put("field2", rddRows[rowIdx].get(1).toString());
// further processing
}
【问题讨论】:
标签: java apache-spark amazon-s3 spark-dataframe