JAVA spark創(chuàng)建DataFrame的方法
述說(shuō)正傳,接下來(lái)開(kāi)始說(shuō)正事。
以前用Python和Scala操作Spark的時(shí)候比較多,畢竟Python和Scala代碼寫(xiě)起來(lái)要簡(jiǎn)潔很多。
今天一起來(lái)看看Java版本怎么創(chuàng)建DataFrame,代碼寫(xiě)起來(lái)其實(shí)差不多,畢竟公用同一套API。測(cè)試數(shù)據(jù)可以參考我之前的文章。
先來(lái)總結(jié)下Spark的一般流程:
1,先創(chuàng)建Spark基礎(chǔ)變量,spark,sc
2,加載數(shù)據(jù),rdd.textFile,spark.read.csv/json等
3,數(shù)據(jù)處理,mapPartition, map,filter,reduce等一系列transformation操作
4,數(shù)據(jù)保存,saveAstextFile,或者其他DataFrame方法
祭出代碼
package dev.java;
import dev.utils.Utils;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.StructType;
import scala.Tuple2;
import java.util.List;
public class Spark1 {
private static final String fileData = "seed";
private static final String fileSave = "result";
private static SparkSession spark = SparkSession.builder()
.appName("Java-Spark")
.master("local[*]")
.config("spark.default.parallelism", 100)
.config("spark.sql.shuffle.partitions", 100)
.config("spark.driver.maxResultSize", "3g")
.getOrCreate();
private static JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext());
public static void main(String[] args) {
Utils.delete(fileSave);
//
t1();
}
private static void t1() {
JavaRDD<Row> rdd = sc.textFile(fileData)
.map(v -> {
String[] parts = v.split("\t");
return RowFactory.create(parts[0], Long.parseLong(parts[1]));
})
.filter(v -> v.getLong(1) >= 10000)
.sortBy(v -> v.getLong(1), false, 100)
.coalesce(2);
Dataset<Row> df = spark.createDataFrame(rdd, StructType.fromDDL("title string, qty long"));
df.write().csv(fileSave);
spark.stop();
}
}
以上就是JAVA操作spark創(chuàng)建DataFrame的方法的詳細(xì)內(nèi)容,更多關(guān)于JAVA Spark 創(chuàng)建DataFrame的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 在IntelliJ IDEA中創(chuàng)建和運(yùn)行java/scala/spark程序的方法
- 從0開(kāi)始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門(mén)與項(xiàng)目實(shí)踐
- java-spark中各種常用算子的寫(xiě)法示例
- Java和scala實(shí)現(xiàn) Spark RDD轉(zhuǎn)換成DataFrame的兩種方法小結(jié)
- 詳解Java編寫(xiě)并運(yùn)行spark應(yīng)用程序的方法
- java 中Spark中將對(duì)象序列化存儲(chǔ)到hdfs
- Java多線程之Park和Unpark原理
相關(guān)文章
SpringBoot+ENC實(shí)現(xiàn)密鑰加密的使用示例
本文主要介紹了SpringBoot+ENC實(shí)現(xiàn)密鑰加密的使用示例,主要是為了將配置信息從應(yīng)用程序代碼中分離出來(lái),以提高安全性和可維護(hù)性,感興趣的可以了解一下2024-07-07
JPA @Query時(shí),無(wú)法使用limit函數(shù)的問(wèn)題及解決
這篇文章主要介紹了JPA @Query時(shí),無(wú)法使用limit函數(shù)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
解決Weblogic部署war找不到spring配置文件的問(wèn)題
這篇文章主要介紹了解決Weblogic部署war找不到spring配置文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2021-07-07
Java線程實(shí)現(xiàn)的三種方式詳細(xì)解析
這篇文章主要介紹了Java線程實(shí)現(xiàn)的三種方式詳細(xì)解析,Java多線程實(shí)現(xiàn)方式主要有三種,繼承Thread類、實(shí)現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程,需要的朋友可以參考下2023-12-12
SpringMVC框架使用jackson封裝數(shù)據(jù)過(guò)程中遇到的問(wèn)題及解決
這篇文章主要介紹了SpringMVC框架使用jackson封裝數(shù)據(jù)過(guò)程中遇到的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
java實(shí)現(xiàn)用戶簽到BitMap功能實(shí)現(xiàn)demo
這篇文章主要為大家介紹了java實(shí)現(xiàn)用戶簽到BitMap功能實(shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

