javaspark,javaspark使用jedis

本文目錄一覽:

java 在本地調試spark引用異常如何解決

你沒有管理權限,意思如下:具有視圖權限的用戶:SET(管理員);具有視圖權限的組:SET();具有修改權限的USER:SET(管理員);具有修改權限的組:SET();

spark java本地環境怎麼搭建

1. 環境準備

Eclipse 請不要使用最新的 Neon(4.6) ,太多Bug了。 還是使用最新的 Mars(4.5) 系列吧

JDK 版本8.x (Linux推薦Oracle, 沒有測試過OpenJDK)

因為只是用Java,因此無需安裝Scala及其相應的插件

2. 創建一個新的maven項目

3. pom.xml

org.apache.hadoop

hadoop-client

2.6.0

javax.servlet

*

org.apache.spark

spark-core_2.10

1.6.1

org.apache.spark

spark-streaming_2.10

1.6.1

org.apache.spark

spark-mllib_2.10

1.6.1

org.scala-lang

scala-library

2.10.5

這裡只列出了必要的幾個依賴。 其他的請根據你自己的項目需求添加

4. 使用maven打包

之後在Goal 之中填寫clean package 即可

如果在修改了與Spark相關的代碼之後,需要重新編譯打包才行。 否則會有異常提示。

5. 代碼編寫注意事項:

在創建JavaSparkContext的時候,需要把自己加進去。

public static JavaSparkContextgetContext(String taskName) {

JavaSparkContextsc = new JavaSparkContext(SparkConnUtils.getSparkConf(taskName));

sc.addJar(“target/sparkstat-0.0.1-SNAPSHOT.jar”);

return sc;

}

其中target/sparkstat-0.0.1-SNAPSHOT.jar是maven 運行之後生成的完整的jar包

spark和java的關係

通常大家只是說Spark是基於內存計算的,速度比MapReduce要快。或者說內存中迭代計算。其實我們要抓住問題的本質。總結有以下幾點:

1、Spark vs MapReduce ≠ 內存 vs 磁盤

其實Spark和MapReduce的計算都發生在內存中,區別在於:

MapReduce通常需要將計算的中間結果寫入磁盤,然後還要讀取磁盤,從而導致了頻繁的磁盤IO。

Spark則不需要將計算的中間結果寫入磁盤,這得益於Spark的RDD(彈性分布式數據集,很強大)和DAG(有向無環圖),其中DAG記錄了job的stage以及在job執行過程中父RDD和子RDD之間的依賴關係。中間結果能夠以RDD的形式存放在內存中,且能夠從DAG中恢復,大大減少了磁盤IO。

2、Spark vs MapReduce Shuffle的不同

Spark和MapReduce在計算過程中通常都不可避免的會進行Shuffle,兩者至少有一點不同:

MapReduce在Shuffle時需要花費大量時間進行排序,排序在MapReduce的Shuffle中似乎是不可避免的;

Spark在Shuffle時則只有部分場景才需要排序,支持基於Hash的分布式聚合,更加省時;

3、多進程模型 vs 多線程模型的區別

MapReduce採用了多進程模型,而Spark採用了多線程模型。多進程模型的好處是便於細粒度控制每個任務佔用的資源,但每次任務的啟動都會消耗一定的啟動時間。就是說MapReduce的Map Task和Reduce Task是進程級別的,而Spark Task則是基於線程模型的,就是說mapreduce 中的 map 和 reduce 都是 jvm 進程,每次啟動都需要重新申請資源,消耗了不必要的時間(假設容器啟動時間大概1s,如果有1200個block,那麼單獨啟動map進程事件就需要20分鐘)

Spark則是通過復用線程池中的線程來減少啟動、關閉task所需要的開銷。(多線程模型也有缺點,由於同節點上所有任務運行在一個進程中,因此,會出現嚴重的資源爭用,難以細粒度控制每個任務佔用資源)

總結:關於Spark為什麼比MapReduce快,或者Spark速度快於MapReduce的原因,總結至少有這幾點不同之處吧。

Spark 中用 Scala 和 java 開發有什麼區別

1,構建系統的選擇,sbt更合適用來構建Scala工程,maven更合適用來構建Java工程

2,對於spark中的API來說,Java和Scala有差別,但差別並不大

3,如果用Scala開發spark原型程序,可以用spark-shell“打草稿”,或者直接使用spark-shell做交互式實時查詢

4,用Scala代碼量將減少甚至一個數量級,不過Scala的使用門檻較高

建議:使用Scala構建spark作業,因為spark本身為sbt所構建,同時使用Scala開發spark作業將有助於理解spark的實現機制

Scala相對Java語法更豐富,更簡潔,寫起來更像腳本,能夠提高開發效率。

使用Java的話代碼會規範些,不過太臃腫,代碼量更大。

另外Spark基本使用函數式編程,使用Java的話可能需要寫一大堆匿名類,而Scala只需要一個lambda表達式。

Java不支持自動類型推導,RDD類基本都是范型,聲明時需要寫一串類類型,而Scala基本可以省略變量類型。

另外,如果喜歡,可以混合Java和Scala,因為二者最終都是編譯成class文件,使用Scala能夠隨意調用Java實現的類和方法。

從表面上看,無論採用哪種語言,都能完成一樣的功能,只是代碼量有多有少,開發人員根據自己的情況選擇使用Java還是Scala都可。

據說目前最新的Java 8已經支持函數式接口了,Java 9也將推出Java Shell功能,慢慢地會變得和Scala一樣簡潔

java的怎麼操作spark的dataframe

t java.util.Properties;

import org.apache.log4j.Logger;

import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.sql.DataFrame;

import org.apache.spark.sql.SQLContext;

import org.apache.spark.sql.SaveMode;

public class Demo_Mysql3 {

private static Logger logger = Logger.getLogger(Demo_Mysql2.class);

public static void main(String[] args) {

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199963.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 14:02
下一篇 2024-12-05 14:02

相關推薦

  • 用Jedis連接Redis集群實現高效數據存儲與讀取

    Redis集群是一個數據高可用解決方案,通過將數據分散在多台計算機上的多個 Redis 節點來實現。它可以自動在多個節點之間按照一定的規則(比如哈希槽)分配數據,以此來實現數據的分…

    編程 2025-04-12
  • 使用SpringBoot整合Jedis提升網站性能

    在如今互聯網時代,網站性能成為了關鍵指標之一。一個高性能的網站不僅可以提升用戶體驗,同時也對於運營、SEO等方面也有着重要的影響。其中,緩存技術是提高網站性能的一種重要手段。本文將…

    編程 2025-01-11
  • Javaspark開發詳解

    一、簡介 Javaspark是一個輕量級的Web框架,它是基於Java語言實現的一種RESTful框架。相比其他框架,它更加簡單易用,代碼量少,支持多種模板引擎,可以快速而方便地創…

    編程 2024-12-27
  • jedis使用指南

    一、jedis使用連接池 Jedis是一個Java編寫的Redis客戶端,儘管它允許使用Jedis實例在應用程序中執行命令,但是創建和釋放Jedis對象的成本較高。因此,使用連接池…

    編程 2024-12-22
  • Jedis API簡介及使用指南

    Jedis是Redis官方推薦的Java客戶端,支持常用的Redis操作,包括基本操作,事務,流水線,發布/訂閱等。在本篇文章中,我們將會詳細闡述Jedis API的使用方法及特點…

    編程 2024-12-15
  • jedis設置過期時間

    一、jedis設置過期時間原子性 在使用Redis進行開發時,會經常使用到key的過期時間設置。jedis使用的是Redis的expire命令,並且在設置過期時間時具有原子性。通過…

    編程 2024-10-27

發表回復

登錄後才能評論