Java 从S3读取Spark中的拼花地板文件
我正在以Java 从S3读取Spark中的拼花地板文件,java,apache-spark,amazon-s3,spark-dataframe,Java,Apache Spark,Amazon S3,Spark Dataframe,我正在以parquet格式从S3读取数据,然后将该数据作为DataFrame处理。 问题是如何有效地迭代数据帧中的行?我知道方法collect将数据加载到内存中,因此,尽管我的DataFrame不大,但我还是希望避免将完整的数据集加载到内存中。如何优化给定的代码? 此外,我还使用索引访问DataFrame中的列。我可以通过列名访问它们(我知道它们)吗 DataFrame parquetFile=sqlContext.read(); parquetFile.RegisterEmptable(“my
parquet
格式从S3读取数据,然后将该数据作为DataFrame
处理。
问题是如何有效地迭代数据帧中的行?我知道方法collect
将数据加载到内存中,因此,尽管我的DataFrame
不大,但我还是希望避免将完整的数据集加载到内存中。如何优化给定的代码?
此外,我还使用索引访问DataFrame
中的列。我可以通过列名访问它们(我知道它们)吗
DataFrame parquetFile=sqlContext.read();
parquetFile.RegisterEmptable(“mydata”);
DataFrame eventsRaw=sqlContext.sql(“从mydata中选择*);
行[]rddRows=eventsRaw.collect();
对于(int-rowIdx=0;rowIdx
您可以在spark中使用映射功能。
您可以迭代整个数据帧,而无需收集数据集/数据帧
Dataset<Row> namesDF = spark.sql("SELECT name FROM parquetFile WHERE age
BETWEEN 13 AND 19");
Dataset<String> namesDS = namesDF.map((MapFunction<Row, String>) row -> "Name:" + row.getString(0),Encoders.STRING());
namesDS.show();
现在可以将此映射函数调用到dataframe的映射函数中
StructType structType = dataset.schema();
namesDF.map((MapFunction<Row, Row>)dosomething,
RowEncoder.apply(structType))
StructType=dataset.schema();
namedf.map((MapFunction)dosomething,
RowEncoder.apply(结构类型))
来源:您可以在spark中使用映射功能。 您可以迭代整个数据帧,而无需收集数据集/数据帧
Dataset<Row> namesDF = spark.sql("SELECT name FROM parquetFile WHERE age
BETWEEN 13 AND 19");
Dataset<String> namesDS = namesDF.map((MapFunction<Row, String>) row -> "Name:" + row.getString(0),Encoders.STRING());
namesDS.show();
现在可以将此映射函数调用到dataframe的映射函数中
StructType structType = dataset.schema();
namesDF.map((MapFunction<Row, Row>)dosomething,
RowEncoder.apply(structType))
StructType=dataset.schema();
namedf.map((MapFunction)dosomething,
RowEncoder.apply(结构类型))
资料来源: