java大數據處理問題

每條一行只能一行一行的來了

把文件分段,用多線程處理

❷ 有了解達內大牛JAVA大數據分析的嗎

聽說過,還上新聞了,跟網路和阿里巴巴都有合作,是共同培養的。

❸ 求Java poi 大數據量導出(五萬行數據) 例子

我給你個辦法,是要導出excel嗎?別使用poi,使用xml來描述excel即可,就像流文件一樣,多少都不會流出,給你個思路,你自己擴展,希望你能看明白。

/**
* @author J.W
* 2011-06-08
*/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
try {
DataOutputStream rafs = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(new File(
"d://test.xml"))));
sb.append("<?xml version=\"1.0\"?>");
sb.append("\n");
sb.append("<?mso-application progid=\"Excel.Sheet\"?>");
sb.append("\n");
sb.append("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
sb.append("\n");
sb.append(" xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
sb.append("\n");
sb.append(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
sb.append("\n");
sb.append(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");
sb.append("\n");
sb.append(" xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
sb.append("\n");
sb.append(" <Styles>\n");
sb.append(" <Style ss:ID=\"Default\" ss:Name=\"Normal\">\n");
sb.append(" <Alignment ss:Vertical=\"Center\"/>\n");
sb.append(" <Borders/>\n");
sb.append(" <Font ss:FontName=\"宋體\" x:CharSet=\"134\" ss:Size=\"12\"/>\n");
sb.append(" <Interior/>\n");
sb.append(" <NumberFormat/>\n");
sb.append(" <Protection/>\n");
sb.append(" </Style>\n");
sb.append(" </Styles>\n");
int sheetcount = 0;
int recordcount = 20;
int currentRecord = 0;
int total = 100;
int col = 20;
sb.append("<Worksheet ss:Name=\"Sheet0\">");
sb.append("\n");
sb.append("<Table ss:ExpandedColumnCount=\"" + col
+ "\" ss:ExpandedRowCount=\"" + total
+ "\" x:FullColumns=\"1\" x:FullRows=\"1\">");
sb.append("\n");
for (int i = 0; i < total; i++) {
if ((currentRecord == recordcount
|| currentRecord > recordcount || currentRecord == 0)
&& i != 0) {// 一個sheet寫滿
currentRecord = 0;
rafs.write(sb.toString().getBytes());
sb.setLength(0);
sb.append("</Table>");
sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
sb.append("\n");
sb.append("<ProtectObjects>False</ProtectObjects>");
sb.append("\n");
sb.append("<ProtectScenarios>False</ProtectScenarios>");
sb.append("\n");
sb.append("</WorksheetOptions>");
sb.append("\n");
sb.append("</Worksheet>");
sb.append("<Worksheet ss:Name=\"Sheet" + i / recordcount
+ "\">");
sb.append("\n");
sb.append("<Table ss:ExpandedColumnCount=\"" + col
+ "\" ss:ExpandedRowCount=\"" + recordcount
+ "\" x:FullColumns=\"1\" x:FullRows=\"1\">");
sb.append("\n");
}
sb.append("<Row>");
for (int j = 0; j < col; j++) {
System.out.println(i);
sb.append("<Cell><Data ss:Type=\"String\">10000000000000000123</Data></Cell>");
sb.append("\n");
}
sb.append("</Row>");
if (i % 5000 == 0) {
rafs.write(sb.toString().getBytes());
rafs.flush();
sb.setLength(0);
}
sb.append("\n");
currentRecord++;
}
rafs.write(sb.toString().getBytes());
sb.setLength(0);
sb.append("</Table>");
sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
sb.append("\n");
sb.append("<ProtectObjects>False</ProtectObjects>");
sb.append("\n");
sb.append("<ProtectScenarios>False</ProtectScenarios>");
sb.append("\n");
sb.append("</WorksheetOptions>");
sb.append("\n");
sb.append("</Worksheet>");
sb.append("</Workbook>");
sb.append("\n");
rafs.write(sb.toString().getBytes());
rafs.flush();
rafs.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

可以直接執行,只是給你個思路。

❹ Java如何處理大數據的

文件讀取:首先是一個文件上傳,數據入庫,10-200萬條不等,這里主要考慮到一次性讀取,JVM分配出來的棧內存不一定會夠(個人對內存這一塊還是處於一知半解的狀態,所以比較謹慎,若諸位大神有好的認知,希望評論留下地址分享一下),是依行讀取數據,設定一個批量值,當讀取的數據達到一定量之後,執行批量入庫操作,清空集合,再接著讀取。
//讀取文件內容
while((s = br.readLine())!=null){
//判斷是否達到單次處理量
if(num%leadingNum==0&&num!=0){
int a = stencDao.insertBatch(listBean);
if(a!=leadingNum){
flag = false;
}
//清空集合
listBean.clear();
}
String value = s.trim();
//將讀取到的內容放入集合中
if(!value.equals("")){
StencilCustomer bean = new StencilCustomer();
bean.setCustomerPhone(value);
bean.setLinkStencilId(id);
listBean.add(bean);
num ++;
}
}
數據處理:這里的思路也是將數據小化然後處理,這里使用了多線程,設定單個線程處理量,然後開啟多個線程處理,這里需要考慮你的伺服器的承載能力,如果線程開得太多了,處理不過來,會出現蹦死的情況。例如200萬數據,我開了20個線程,單個線程處理600條。
//建立一個線程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
minTaskNumber, maxTaskNumber, 3L, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(minTaskNumber),
new ThreadPoolExecutor.DiscardOldestPolicy());
//當正在執行的線程數達到最大執行線程數的時候等待
boolean flag = true;
while(flag){
Thread.sleep(1000);//休眠2ms查詢一次
int c = threadPool.getActiveCount();//線程池中活動中的線程數量
if(c<maxTaskNumber){
flag = false;
}
}
上面的代碼是我對線程池的一個控制,控制伺服器一直最大線程執行,Thread.sleep(1000);用while的時候,這個休眠最好不要去掉,去掉之後很影響執行效率

❺ JAVA開源大數據查詢分析引擎有哪些方案

在大數據處理分析過程中常用的六大工具:HadoopHadoop是一個能夠對大量數據進行分布式處理的軟體框架。但是Hadoop是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分布處理。Hadoop是高效的,因為它以並行的方式工作,通過並行處理加快處理速度。Hadoop還是可伸縮的,能夠處理PB級數據。此外,Hadoop依賴於社區伺服器,因此它的成本比較低,任何人都可以使用。HPCCHPCC,(高性能計算與通信)的縮寫。1993年,由美國科學、工程、技術聯邦協調理事會向國會提交了逗重大挑戰項目:高性能計算與通信地的報告,也就是被稱為HPCC計劃的報告,即美國總統科學戰略項目,其目的是通過加強研究與開發解決一批重要的科學與技術挑戰問題。HPCC是美國實施信息高速公路而上實施的計劃,該計劃的實施將耗資百億美元,其主要目標要達到:開發可擴展的計算系統及相關軟體,以支持太位級網路傳輸性能,開發千兆比特網路技術,擴展研究和教育機構及網路連接能力。StormStorm是自由的開源軟體,一個分布式的、容錯的實時計算系統。Storm可以非常可靠的處理龐大的數據流,用於處理Hadoop的批量數據。Storm很簡單,支持許多種編程語言,使用起來非常有趣。ApacheDrill為了幫助企業用戶尋找更為有效、加快Hadoop數據查詢的方法,Apache軟體會近日發起了一項名為逗Drill地的開源項目。ApacheDrill實現了Google'sDremel.據Hadoop廠商MapRTechnologies公司產品經理TomerShiran介紹,逗Drill地已經作為Apache孵化器項目來運作,將面向全球軟體工程師持續推廣。RapidMinerRapidMiner是世界領先的數據挖掘解決方案,在一個非常大的程度上有著先進技術。它數據挖掘任務涉及范圍廣泛,包括各種數據藝術,能簡化數據挖掘過程的設計和評價。

❻ java 不能做大數據分析么

大數據常和雲計算聯繫到一起,因為實時的大型數據集分析需要分布式處理框架來向數十、數百或甚至數萬的電腦分配工作。可以說,雲計算充當了工業革命時期的發動機的角色,而大數據則是電。雲計算思想的起源是麥卡錫在上世紀60年代提出的:把計算能力作為一種像水和電一樣的公用事業提供給用戶。如今,在Google、Amazon、Facebook等一批互聯網企業引領下,一種行之有效的模式出現了:雲計算提供基礎架構平台,大數據應用運行在這個平台上。

業內是這么形容兩者的關系:沒有大數據的信息積淀,則雲計算的計算能力再強大,也難以找到用武之地;沒有雲計算的處理能力,則大數據的信息積淀再豐富,也終究只是鏡花水月。

那麼大數據到底需要哪些雲計算技術呢?

這里暫且列舉一些,比如虛擬化技術,分布式處理技術,海量數據的存儲和管理技術,NoSQL、實時流數據處理、智能分析技術(類似模式識別以及自然語言理解)等。

雲計算和大數據之間的關系可以用下面的一張圖來說明,兩者之間結合後會產生如下效應:可以提供更多基於海量業務數據的創新型服務;通過雲計算技術的不斷發展降低大數據業務的創新成本。

如果將雲計算與大數據進行一些比較,最明顯的區分在兩個方面:

第一,在概念上兩者有所不同,雲計算改變了IT,而大數據則改變了業務。然而大數據必須有雲作為基礎架構,才能得以順暢運營

第二,大數據和雲計算的目標受眾不同,雲計算是CIO等關心的技術層,是一個進階的IT解決方案。而大數據是CEO關注的、是業務層的產品,而大數據的決策者是業務層。

2、分布式處理技術

分布式處理系統可以將不同地點的或具有不同功能的或擁有不同數據的多台計算機用通信網路連接起來,在控制系統的統一管理控制下,協調地完成信息處理任務—這就是分布式處理系統的定義。

以Hadoop(Yahoo)為例進行說明,Hadoop是一個實現了MapRece模式的能夠對大量數據進行分布式處理的軟體框架,是以一種可靠、高效、可伸縮的方式進行處理的。

而MapRece是Google提出的一種雲計算的核心計算模式,是一種分布式運算技術,也是簡化的分布式編程模式,MapRece模式的主要思想是將自動分割要執行的問題(例如程序)拆解成map(映射)和rece(化簡)的方式,在數據被分割後通過Map 函數的程序將數據映射成不同的區塊,分配給計算機機群處理達到分布式運算的效果,在通過Rece 函數的程序將結果匯整,從而輸出開發者需要的結果。

再來看看Hadoop的特性,第一,它是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分布處理。其次,Hadoop 是高效的,因為它以並行的方式工作,通過並行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級數據。此外,Hadoop 依賴於社區伺服器,因此它的成本比較低,任何人都可以使用。

你也可以這么理解Hadoop的構成,Hadoop=HDFS(文件系統,數據存儲技術相關) HBase(資料庫) MapRece(數據處理) ……Others

❼ 使用java開發B/S的大數據分析軟體 應該用什麼框架新手勿噴

在大數據處理分析過程中常用的六大工具:
Hadoop
Hadoop 是一個能夠對大量數據進行分布式處理的軟體框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分布處理。Hadoop 是高效的,因為它以並行的方式工作,通過並行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級數據。此外,Hadoop 依賴於社區伺服器,因此它的成本比較低,任何人都可以使用。
HPCC
HPCC,High Performance Computing and Communications(高性能計算與通信)的縮寫。1993年,由美國科學、工程、技術聯邦協調理事會向國會提交了逗重大挑戰項目:高性能計算與 通信地的報告,也就是被稱為HPCC計劃的報告,即美國總統科學戰略項目,其目的是通過加強研究與開發解決一批重要的科學與技術挑戰問題。HPCC是美國 實施信息高速公路而上實施的計劃,該計劃的實施將耗資百億美元,其主要目標要達到:開發可擴展的計算系統及相關軟體,以支持太位級網路傳輸性能,開發千兆 比特網路技術,擴展研究和教育機構及網路連接能力。
Storm
Storm是自由的開源軟體,一個分布式的、容錯的實時計算系統。Storm可以非常可靠的處理龐大的數據流,用於處理Hadoop的批量數據。Storm很簡單,支持許多種編程語言,使用起來非常有趣。
Apache Drill
為了幫助企業用戶尋找更為有效、加快Hadoop數據查詢的方法,Apache軟體會近日發起了一項名為逗Drill地的開源項目。Apache Drill 實現了 Google's Dremel.
據Hadoop廠商MapR Technologies公司產品經理Tomer Shiran介紹,逗Drill地已經作為Apache孵化器項目來運作,將面向全球軟體工程師持續推廣。
RapidMiner
RapidMiner是世界領先的數據挖掘解決方案,在一個非常大的程度上有著先進技術。它數據挖掘任務涉及范圍廣泛,包括各種數據藝術,能簡化數據挖掘過程的設計和評價。

❽ 作為一個Java程序員,該怎麼轉行做大數據分析師

想學習大數據分析,大致需要學習這些:
1、資料庫
學習MySQL、MongoDB、Redis等;
2、演算法和工具專
了解各種如屬分類、關聯、回歸、決策樹等演算法;熟練掌握一門數據挖掘工具Python。
3、項目實踐
加深對所學知識的理解和應用。
另外,補充一些高數、線性代數等知識,會更有幫助哦!

❾ java大數據的發展怎麼樣

Java發展前景:根據IDC的統計數字,在所有軟體開發類人才的需求中,對Java工程師回的需求達到全部需求量的60%~答70%。同時,Java工程師 的薪水相對較高。Java軟體工程師一般月薪范圍在4000-10000元,遠 遠超過了應屆畢業生2500元的平均水平。通常來說,有一年工作經驗的Java高級軟體工程師的薪酬。

❿ java 大數據發展

Java發展前景:根據IDC的統計數字,在所有軟體開發類人才的需求中,對Java工程師回的需求達到全答部需求量的60%~70%。同時,Java工程師 的薪水相對較高。Java軟體工程師一般月薪范圍在4000-10000元,遠 遠超過了應屆畢業生2500元的平均水平。通常來說,有一年工作經驗的Java高級軟體工程師的薪酬

大致在年薪10-13萬左右。

簡單易學:Java語言語法簡單,Java語言擁有與C、C++等眾多流行語言一樣的簡潔易懂的關鍵字、語法。

虛擬機保駕護航,Java程序員無需手動開辟、釋放內存,這一切都由虛擬機幫你做了。

使用Java語言開發諸如服務後台、數據報表等復雜的應用場景都有簡單完美的解決方案。