Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从S3读取Spark中的拼花地板文件_Java_Apache Spark_Amazon S3_Spark Dataframe - Fatal编程技术网

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(结构类型))
资料来源: