當前位置:首頁 » 密碼管理 » spark訪問oracle

spark訪問oracle

發布時間: 2023-03-24 12:05:51

① sparksql寫入表中,bigint類型顯示null

在 SQL 中,NULL 表示「未知」。也就是說,NULL 值表示伍緩的是「未知」的值。

NULL = 未知;

在大多數資料庫中,NULl 和空字元串是有區別的。

但並不是所有資料庫都這樣,例如,Oracle 就不支持此碰空字元串,它會把空字元串自動轉成 NULL 值。

在其他大多數資料庫里,NULL 值和字元串的處理方式是不一樣的:

空字元("")串雖然表示「沒有腔扒模值」,但這個值是已知的。

NULL 表示 「未知值」,這個值是未知的。

② 大數據時代的數據管理可以使用哪些軟體

數據是平台運營商的重要資產,可能提供API介面允許第三方有限度地使用,但是顯然是為了增強自身的業務,與此目的抵觸的行為都會受到約束。
收集數據主要是通過計算機和網路。凡是經過計算機處理的數據都很容易收集,比如瀏覽器里的搜索、點擊、網上購物、……其他數據(比如氣溫、海水鹽度、地震波)可以通過感測器轉化成數字信號輸入計算機。
收集到的數據一般要先經過整理,常用的軟體:Tableau和Impure是功能比較全面的,Refine和Wrangler是比較純粹的數據整理工具,Weka用於數據挖掘。
Hadoop是一個能夠對大量數據進行分布式處理的軟體框架。用於統計分析的R語言有個擴展R + Hadoop,可以在Hadoop集群上運行R代碼。更具體的自己搜索吧。
可視化輸出的工具很多。建議參考wikipedia的「數據可視化」條目。
Tableau、Impure都有可視化功能。R語言也可以繪圖。
還有很多可以用來在網頁上實現可視化輸出的框架或者控制項。
大致基於四種技術:Flash(Flex)或者JS(HTML5)或者java或者ASP.NET(Silverlight)
Flash的有Degrafa、BirdEye、Axiis、Open Flash Chart
JS的有Ajax.org、Sencha Ext JS、Filament、jQchart、Flot、Sparklines、gRaphael、TufteGraph、Exhibit、PlotKit、ExplorerCanvas、MilkChart、Google Chart API、Protovis
Java的有Choosel、google-visualization-java、GWT Chronoscope、JFreeChart
ASP.NET的有Telerik Charts、Visifire、Dundas Chart
目前我比較喜歡d3(Data-Driven Documents),圖形種類豐富,有交互能力,你可以去d3js.org看看,有很多種圖形的demo。

③ spark和hadoop的區別

spark和hadoop的區別:誕生的先後順序、計算不同、平台不同。
誕生的先後順序,hadoop屬於第一代開源大數據處理平台,而spark屬於第二森盯代。屬於下一代的spark肯定在綜合評價上要優於第一代的hadoop。
計算不同spark和hadoop在分布式計算的底層思路上,其實宏昌是極為相似的,即maprece分布式運算模此絕和型:將運算分成兩個階段,階段1-map,負責從上游拉取數據後各自運算,然後將運算結果shuffle給下游的rece,rece再各自對通過shuffle讀取來的數據進行聚合運算spark和hadoop在分布式計算的具體實現上,又有區別;hadoop中的maprece運算框架,一個運算job,進行一次map-rece的過程;而spark的一個job中,可以將多個map-rece過程級聯進行。
平台不同spark和hadoop區別是,spark是一個運算平台,而hadoop是一個復合平台(包含運算引擎,還包含分布式文件存儲系統,還包含分布式運算的資源調度系統),所以,spark跟hadoop來比較的話,主要是比運算這一塊大數據技術發展到目前這個階段,hadoop主要是它的運算部分日漸式微,而spark目前如日中天,相關技術需求量大,offer好拿。

④ 怎麼統一mysql oracle db2 gbase hive spark 查詢

操作方運廳法如下:
public List<攔悄脊Bars> pageListTwo(int currentPage, int showRows)

Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList<簡滲Bars> resultList = new ArrayList<Bars>();
try
{

⑤ 大數據雲計算好不好學習

說一下大數據的四個典型的特徵:

  • 數據量大;

  • 數據類型繁多,(結構化、非結構化文本、日誌、視頻、圖片、地理位置等);

  • 商業價值高,但需要在海量數據之上,通過數據分析與機器學習快速的挖掘出來;

  • 處理時效性高,海量數據的處理需求不再局限在離線計算當中。

第一章:Hadoop

在大數據存儲和計算中Hadoop可以算是開山鼻祖,現在大多開源的大數據框架都依賴Hadoop或者與它能很好的兼容。

關於Hadoop,你至少需要搞清楚這些是什麼:

自己學會如何搭建Hadoop,先讓它跑起來。建議先使用安裝包命令行安裝,不要使用管理工具安裝。現在都用Hadoop 2.0。

目錄操作命令;上傳、下載文件命令;提交運行MapRece示常式序;打開Hadoop WEB界面,查看Job運行狀態,查看Job運行日誌。知道Hadoop的系統日誌在哪裡。

以上完成之後,就應該去了解他們的原理了:

MapRece:如何分而治之;HDFS:數據到底在哪裡,究竟什麼才是副本;

Yarn到底是什麼,它能幹什麼;NameNode到底在幹些什麼;Resource Manager到底在幹些什麼;

如果有合適的學習網站,視頻就去聽課,如果沒有或者比較喜歡書籍,也可以啃書。當然最好的方法是先去搜索出來這些是干什麼的,大概有了概念之後,然後再去聽視頻。

第二章:更高效的WordCount

在這里,一定要學習SQL,它會對你的工作有很大的幫助。

就像是你寫(或者抄)的WordCount一共有幾行代碼?但是你用SQL就非常簡單了,例如:

SELECT word,COUNT(1) FROM wordcount GROUP BY word;

這便是SQL的魅力,編程需要幾十行,甚至上百行代碼,而SQL一行搞定;使用SQL處理分析Hadoop上的數據,方便、高效、易上手、更是趨勢。不論是離線計算還是實時計算,越來越多的大數據處理框架都在積極提供SQL介面。

另外就是SQL On Hadoop之Hive於大數據而言一定要學習的。

什麼是Hive?

官方解釋如下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax。

為什麼說Hive是數據倉庫工具,而不是資料庫工具呢?

有的朋友可能不知道數據倉庫,數據倉庫是邏輯上的概念,底層使用的是資料庫,數據倉庫中的數據有這兩個特點:最全的歷史數據(海量)、相對穩定的;所謂相對穩定,指的是數據倉庫不同於業務系統資料庫,數據經常會被更新,數據一旦進入數據倉庫,很少會被更新和刪除,只會被大量查詢。而Hive,也是具備這兩個特點,因此,Hive適合做海量數據的數據倉庫工具,而不是資料庫工具。

了解了它的作用之後,就是安裝配置Hive的環節,當可以正常進入Hive命令行是,就是安裝配置成功了。

了解Hive是怎麼工作的

學會Hive的基本命令:

創建、刪除表;載入數據到表;下載Hive表的數據;

MapRece的原理(還是那個經典的題目,一個10G大小的文件,給定1G大小的內存,如何使用Java程序統計出現次數最多的10個單詞及次數);

HDS讀寫數據的流程;向HDFS中PUT數據;從HDFS中下載數據;

自己會寫簡單的MapRece程序,運行出現問題,知道在哪裡查看日誌;

會寫簡單的Select、Where、group by等SQL語句;

Hive SQL轉換成MapRece的大致流程;

Hive中常見的語句:創建表、刪除表、往表中載入數據、分區、將表中數據下載到本地;

從上面的學習,你已經了解到,HDFS是Hadoop提供的分布式存儲框架,它可以用來存儲海量數據,MapRece是Hadoop提供的分布式計算框架,它可以用來統計和分析HDFS上的海量數據,而Hive則是SQL On Hadoop,Hive提供了SQL介面,開發人員只需要編寫簡單易上手的SQL語句,Hive負責把SQL翻譯成MapRece,提交運行。

此時,你的」大數據平台」是這樣的:那麼問題來了,海量數據如何到HDFS上呢?

第三章:數據採集

把各個數據源的數據採集到Hadoop上。

3.1 HDFS PUT命令

這個在前面你應該已經使用過了。put命令在實際環境中也比較常用,通常配合shell、python腳本語言來使用。建議熟練掌握。

3.2 HDFS API

HDFS提供了寫數據的API,自己用編程語言將數據寫入HDFS,put命令本身也是使用API。

實際環境中一般自己較少編寫程序使用API來寫數據到HDFS,通常都是使用其他框架封裝好的方法。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等。建議了解原理,會寫Demo。

3.3 Sqoop

Sqoop是一個主要用於Hadoop/Hive與傳統關系型資料庫,Oracle、MySQL、SQLServer等之間進行數據交換的開源框架。就像Hive把SQL翻譯成MapRece一樣,Sqoop把你指定的參數翻譯成MapRece,提交到Hadoop運行,完成Hadoop與其他資料庫之間的數據交換。

自己下載和配置Sqoop(建議先使用Sqoop1,Sqoop2比較復雜)。了解Sqoop常用的配置參數和方法。

使用Sqoop完成從MySQL同步數據到HDFS;使用Sqoop完成從MySQL同步數據到Hive表;如果後續選型確定使用Sqoop作為數據交換工具,那麼建議熟練掌握,否則,了解和會用Demo即可。

3.4 Flume

Flume是一個分布式的海量日誌採集和傳輸框架,因為「採集和傳輸框架」,所以它並不適合關系型資料庫的數據採集和傳輸。Flume可以實時的從網路協議、消息系統、文件系統採集日誌,並傳輸到HDFS上。

因此,如果你的業務有這些數據源的數據,並且需要實時的採集,那麼就應該考慮使用Flume。

下載和配置Flume。使用Flume監控一個不斷追加數據的文件,並將數據傳輸到HDFS;Flume的配置和使用較為復雜,如果你沒有足夠的興趣和耐心,可以先跳過Flume。

3.5 阿里開源的DataX

現在DataX已經是3.0版本,支持很多數據源。

第四章:把Hadoop上的數據搞到別處去

Hive和MapRece進行分析了。那麼接下來的問題是,分析完的結果如何從Hadoop上同步到其他系統和應用中去呢?其實,此處的方法和第三章基本一致的。

HDFS GET命令:把HDFS上的文件GET到本地。需要熟練掌握。

HDFS API:同3.2.

Sqoop:同3.3.使用Sqoop完成將HDFS上的文件同步到MySQL;使用Sqoop完成將Hive表中的數據同步到MySQL。

如果你已經按照流程認真完整的走了一遍,那麼你應該已經具備以下技能和知識點:

知道如何把已有的數據採集到HDFS上,包括離線採集和實時採集;

知道sqoop是HDFS和其他數據源之間的數據交換工具;

知道flume可以用作實時的日誌採集。

從前面的學習,對於大數據平台,你已經掌握的不少的知識和技能,搭建Hadoop集群,把數據採集到Hadoop上,使用Hive和MapRece來分析數據,把分析結果同步到其他數據源。

接下來的問題來了,Hive使用的越來越多,你會發現很多不爽的地方,特別是速度慢,大多情況下,明明我的數據量很小,它都要申請資源,啟動MapRece來執行。

第五章:SQL

其實大家都已經發現Hive後台使用MapRece作為執行引擎,實在是有點慢。因此SQL On Hadoop的框架越來越多,按我的了解,最常用的按照流行度依次為SparkSQL、Impala和Presto.這三種框架基於半內存或者全內存,提供了SQL介面來快速查詢分析Hadoop上的數據。

我們目前使用的是SparkSQL,至於為什麼用SparkSQL,原因大概有以下吧:使用Spark還做了其他事情,不想引入過多的框架;Impala對內存的需求太大,沒有過多資源部署。

5.1 關於Spark和SparkSQL

什麼是Spark,什麼是SparkSQL。

Spark有的核心概念及名詞解釋。

SparkSQL和Spark是什麼關系,SparkSQL和Hive是什麼關系。

SparkSQL為什麼比Hive跑的快。

5.2 如何部署和運行SparkSQL

Spark有哪些部署模式?

如何在Yarn上運行SparkSQL?

使用SparkSQL查詢Hive中的表。Spark不是一門短時間內就能掌握的技術,因此建議在了解了Spark之後,可以先從SparkSQL入手,循序漸進。

關於Spark和SparkSQL,如果你認真完成了上面的學習和實踐,此時,你的」大數據平台」應該是這樣的。

第六章:數據多次利用

請不要被這個名字所誘惑。其實我想說的是數據的一次採集、多次消費。

在實際業務場景下,特別是對於一些監控日誌,想即時的從日誌中了解一些指標(關於實時計算,後面章節會有介紹),這時候,從HDFS上分析就太慢了,盡管是通過Flume採集的,但Flume也不能間隔很短就往HDFS上滾動文件,這樣會導致小文件特別多。

為了滿足數據的一次採集、多次消費的需求,這里要說的便是Kafka。

關於Kafka:什麼是Kafka?Kafka的核心概念及名詞解釋。

如何部署和使用Kafka:使用單機部署Kafka,並成功運行自帶的生產者和消費者例子。使用Java程序自己編寫並運行生產者和消費者程序。Flume和Kafka的集成,使用Flume監控日誌,並將日誌數據實時發送至Kafka。

如果你認真完成了上面的學習和實踐,此時,你的」大數據平台」應該是這樣的。

這時,使用Flume採集的數據,不是直接到HDFS上,而是先到Kafka,Kafka中的數據可以由多個消費者同時消費,其中一個消費者,就是將數據同步到HDFS。

如果你已經認真完整的學習了以上的內容,那麼你應該已經具備以下技能和知識點:

為什麼Spark比MapRece快。

使用SparkSQL代替Hive,更快的運行SQL。

使用Kafka完成數據的一次收集,多次消費架構。

自己可以寫程序完成Kafka的生產者和消費者。

從前面的學習,你已經掌握了大數據平台中的數據採集、數據存儲和計算、數據交換等大部分技能,而這其中的每一步,都需要一個任務(程序)來完成,各個任務之間又存在一定的依賴性,比如,必須等數據採集任務成功完成後,數據計算任務才能開始運行。如果一個任務執行失敗,需要給開發運維人員發送告警,同時需要提供完整的日誌來方便查錯。

第七章:越來越多的分析任務

不僅僅是分析任務,數據採集、數據交換同樣是一個個的任務。這些任務中,有的是定時觸發,有點則需要依賴其他任務來觸發。當平台中有幾百上千個任務需要維護和運行時候,僅僅靠crontab遠遠不夠了,這時便需要一個調度監控系統來完成這件事。調度監控系統是整個數據平台的中樞系統,類似於AppMaster,負責分配和監控任務。

7.1 Apache Oozie

Oozie是什麼?有哪些功能?

Oozie可以調度哪些類型的任務(程序)?

Oozie可以支持哪些任務觸發方式?

安裝配置Oozie。

7.2 其他開源的任務調度系統

Azkaban,light-task-scheler,Zeus,等等。另外,我這邊是之前單獨開發的任務調度與監控系統,具體請參考《大數據平台任務調度與監控系統》。

第八章:我的數據要實時

在第六章介紹Kafka的時候提到了一些需要實時指標的業務場景,實時基本可以分為絕對實時和准實時,絕對實時的延遲要求一般在毫秒級,准實時的延遲要求一般在秒、分鍾級。對於需要絕對實時的業務場景,用的比較多的是Storm,對於其他准實時的業務場景,可以是Storm,也可以是Spark Streaming。當然,如果可以的話,也可以自己寫程序來做。

8.1 Storm

什麼是Storm?有哪些可能的應用場景?

Storm由哪些核心組件構成,各自擔任什麼角色?

Storm的簡單安裝和部署。

自己編寫Demo程序,使用Storm完成實時數據流計算。

8.2 Spark Streaming

什麼是Spark Streaming,它和Spark是什麼關系?

Spark Streaming和Storm比較,各有什麼優缺點?

使用Kafka + Spark Streaming,完成實時計算的Demo程序。

至此,你的大數據平台底層架構已經成型了,其中包括了數據採集、數據存儲與計算(離線和實時)、數據同步、任務調度與監控這幾大模塊。接下來是時候考慮如何更好的對外提供數據了。

第九章:數據要對外

通常對外(業務)提供數據訪問,大體上包含以下方面。


離線:比如,每天將前一天的數據提供到指定的數據源(DB、FILE、FTP)等;離線數據的提供可以採用Sqoop、DataX等離線數據交換工具。

實時:比如,在線網站的推薦系統,需要實時從數據平台中獲取給用戶的推薦數據,這種要求延時非常低(50毫秒以內)。根據延時要求和實時數據的查詢需要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。

OLAP分析:OLAP除了要求底層的數據模型比較規范,另外,對查詢的響應速度要求也越來越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。如果你的數據模型比較規模,那麼Kylin是最好的選擇。

即席查詢:即席查詢的數據比較隨意,一般很難建立通用的數據模型,因此可能的方案有:Impala、Presto、SparkSQL。

這么多比較成熟的框架和方案,需要結合自己的業務需求及數據平台技術架構,選擇合適的。原則只有一個:越簡單越穩定的,就是最好的。

⑥ 為什麼運行不成功 spark

2.1.2在Windows上安裝與配置Spark

本節介紹在Windows系統上安裝Spark的過程。在Windows環境下需要安裝Cygwin模擬Linux的命令行環境來安裝Spark。

(1)安裝JDK

相對於Linux、Windows的JDK安裝更悶搜判加自動化,用戶可以下載安裝Oracle JDK或者OpenJDK。只安裝JRE是不夠的,用戶應該下載整個JDK。

安裝過程十分簡單,運行二進制可執行文件即可,程序會自動配置環境變數。

(2)安裝Cygwin

Cygwin是在Windows平台下模擬Linux環境的一個非常有用的工具,只有通過它才可以在Windows環境下安裝Hadoop和Spark。具體安裝步驟如下。

1)運行安裝程序,選擇漏消install from internet。

2)選擇網路最好的下載源進行下載。

3)進入Select Packages界面(見圖2-2),然後進入Net,選擇openssl及openssh。因為之後還是會用到ssh無密鑰登錄的。

另外應該安裝「Editors Category」下面的「vim」。這樣就可以在Cygwin上方便地修改配置文件。

最後需要配置環境變數,依次選擇「我的電腦」→「屬性」→「高級系統設置」→「環境變數」命令,更新環境變數中的path設置,在其後添加Cygwin的bin目錄和Cygwin的usr\bin兩個目錄。

(3)安裝sshd並配置免密碼登錄

1)雙擊桌面上的Cygwin圖標,啟動Cygwin,執行ssh-host-config -y命令,出現如圖2-3所示的界面。

2)執行後,提示輸入密碼,否則會退出該配置,此時輸入密碼和確認密碼,按回車鍵。最後出現Host configuration finished.Have fun!表示安裝成功。

3)輸入net start sshd,啟動服務。或者在系統的服務中找到並啟動Cygwin sshd服務。

注意,如果是Windows 8操作系統,啟動Cygwin時,需要以管理員身份運行(右擊圖標,選擇以管理員身份運行),否則會因為許可權問題,提示「發生系統錯誤5」。

(4)配置SSH免密碼登錄

1)執行ssh-keygen命令生成密鑰文件,如圖2-4所示。

2)執行此命令後,在你的螞改Cygwin\home\用戶名路徑下面會生成.ssh文件夾,可以通過命令ls -a /home/用戶名 查看,通過ssh -version命令查看版本。

3)執行完ssh-keygen命令後,再執行下面命令,生成authorized_keys文件。

cd ~/.ssh/
cp id_dsa.pub authorized_keys
這樣就配置好了sshd服務。

(5)配置Hadoop

修改和配置相關文件與Linux的配置一致,讀者可以參照上文Linux中的配置方式,這里不再贅述。

(6)配置Spark

修改和配置相關文件與Linux的配置一致,讀者可以參照上文Linux中的配置方式,這里不再贅述。

(7)運行Spark

1)Spark的啟動與關閉

①在Spark根目錄啟動Spark。

./sbin/start-all.sh
②關閉Spark。

./sbin/stop-all.sh
2)Hadoop的啟動與關閉

①在Hadoop根目錄啟動Hadoop。

./sbin/start-all.sh
②關閉Hadoop。

./sbin/stop-all.sh
3)檢測是否安裝成功

正常狀態下會出現如下內容。

-bash-4.1# jps
23526 Jps
2127 Master
7396 NameNode
7594 SecondaryNameNode
7681 ResourceManager
1053 DataNode
31935 NodeManager
1405 Worker
如缺少進程請到logs文件夾下查看相應日誌,針對具體問題進行解決。

⑦ sparksql不支持對oracle的並行讀寫

正常情況。sparksql和oracle對應的版本不同,不支持是正常毀清情況。讀寫是將存儲在硬碟中的纖隱前數據調入系統,寫入是將攜陸系統中的數據保存在硬碟中。

⑧ java oracle sql spark什麼關系

java是一種編程語言,脊物用來緩渣開發軟體程序的。
oracle是一種資料庫,用來進行數據的存儲和管理的軟體;
sql是一種資料庫查詢語言,用來對資料庫中的數據進行各種操作的。
java可以通過sql語句對oracle中存儲的數據進行操櫻哪液作。
spark不了解。

⑨ sparksql支持delete操作么

本來缺配基於 HDFS 的 spark/impala 的 sql-like 的語法是挺好用的,性能也很不錯,無奈 hdfs 上的存儲系統一般不支持 update/delete ,只支持伏巧指 insert ,剛接觸 Bigdata 、 DW 這一塊,不是很了解這方面的技術 /產品,有什麼推薦的嗎?

目前有要求如下

分布式,方便擴展
sql-like 是最寬銷好的
需要支持 update/delete 等修改
盡量是開源免費,而且不那麼小眾的
目前我知道 GreenPlum , Any other ideas?

PS:沒找到合適的節點。

⑩ spark streaming怎麼將計算結果寫入oracle

你模岩握試試,看這樣可以不!

object Test {

case class Person(words: String,number:Int)
def main(args: Array[String]) {

val sparkConf = new SparkConf().setAppName("TextStream")
val sc = new SparkContext(sparkConf)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance()
val conn = DriverManager.getConnection("jdbc:oracle:thin:@host/oracledb", "user", "棗閉password")
var ps: PreparedStatement = null
val ssc = new StreamingContext(sparkConf, Seconds(6))
// Create the FileInputDStream on the directory and use the
val lines = ssc.textFileStream("/user/input/")
val words = lines.flatMap(_.split(","))
val wordCounts = words.map(x => (x, 1))
// wordCounts.print()
wordCounts.foreachRDD((rdd:RDD[(String,Int)])=>{
rdd.foreach(lines=>旦慶{
ps = conn.prepareStatement("insert into testtables values(?,?)")
ps.setString(1, lines._1)
ps.setInt(2, lines._2)
ps.executeUpdate()
})
})
}
}

熱點內容
sqlserver2008sql 發布:2024-05-30 21:24:28 瀏覽:680
資料庫神通 發布:2024-05-30 21:18:26 瀏覽:614
shell腳本加減 發布:2024-05-30 21:17:32 瀏覽:235
qq聊天記錄在哪個文件夾win7 發布:2024-05-30 20:15:02 瀏覽:957
java的gc 發布:2024-05-30 20:14:04 瀏覽:404
文檔型資料庫 發布:2024-05-30 20:13:58 瀏覽:533
腳本滑動沒用 發布:2024-05-30 20:13:17 瀏覽:819
編譯原理全都要學嗎 發布:2024-05-30 19:51:32 瀏覽:806
計數演算法高中 發布:2024-05-30 19:29:08 瀏覽:296
百度首頁源碼 發布:2024-05-30 19:23:55 瀏覽:660