『壹』 r語言連接mysql資料庫查詢表中文欄位名亂碼怎麼解決
把所有的編碼都改為UTF-8,包括jsp頁面,資料庫編碼等
資料庫用的是UTF-8,客戶端用GBK連接,這都沒問題,但是JSP頁面也得用UTF-8或者在保存前使用代碼轉化成UTF-8編碼(String mycontent=new String(content.getBytes("ISO-8859-1"),"UTF-8");)也可以.
希望以上信息可以幫到您!
『貳』 R語言如何資料庫讀取數據
R 對於基於 SQL 語言的關系型資料庫有良好 的支持,這些資料庫既有商業資料庫 Oracle、Microsoft SQL Server、IBM DB2 等,也包含在 GNU General Public License (GPL) 下發布的 MySQL 等開源資料庫。 RMySQL 包中提供了到 MySQL 資料庫的介面;RODBC 包提供了更為廣泛資料庫介面的解 決方案 支持所有標准 ODBC 介面的資料庫。通過這種方式,相同的 R 代碼可以方便地應用於 不同類型的資料庫。 library (RODBC) ch <- odbcConnect("stocksDSN",uid = "myuser",pwd = "mypassword") stocks <- sqlQuery(ch ,"select * from quotes") odbcClose(ch) 經測試,Windows 平台上的 Microsoft SQL Server、Access、Oracle、MySQL、PostgreSQL,和
『叄』 如何讓Hadoop結合R語言做大數據分析
R語言和Hadoop讓我們體會到了,兩種技術在各自領域的強大。很多開發人員在計算機的角度,都會提出下面2個問題。問題1: Hadoop的家族如此之強大,為什麼還要結合R語言?
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什麼?下面我嘗試著做一個解答:問題1: Hadoop的家族如此之強大,為什麼還要結合R語言?
a. Hadoop家族的強大之處,在於對大數據的處理,讓原來的不可能(TB,PB數據量計算),成為了可能。
b. R語言的強大之處,在於統計分析,在沒有Hadoop之前,我們對於大數據的處理,要取樣本,假設檢驗,做回歸,長久以來R語言都是統計學家專屬的工具。
c. 從a和b兩點,我們可以看出,hadoop重點是全量數據分析,而R語言重點是樣本數據分析。 兩種技術放在一起,剛好是最長補短!
d. 模擬場景:對1PB的新聞網站訪問日誌做分析,預測未來流量變化
d1:用R語言,通過分析少量數據,對業務目標建回歸建模,並定義指標d2:用Hadoop從海量日誌數據中,提取指標數據d3:用R語言模型,對指標數據進行測試和調優d4:用Hadoop分步式演算法,重寫R語言的模型,部署上線這個場景中,R和Hadoop分別都起著非常重要的作用。以計算機開發人員的思路,所有有事情都用Hadoop去做,沒有數據建模和證明,」預測的結果」一定是有問題的。以統計人員的思路,所有的事情都用R去做,以抽樣方式,得到的「預測的結果」也一定是有問題的。所以讓二者結合,是產界業的必然的導向,也是產界業和學術界的交集,同時也為交叉學科的人才提供了無限廣闊的想像空間。問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什麼?
a. Mahout是基於Hadoop的數據挖掘和機器學習的演算法框架,Mahout的重點同樣是解決大數據的計算的問題。
b. Mahout目前已支持的演算法包括,協同過濾,推薦演算法,聚類演算法,分類演算法,LDA, 樸素bayes,隨機森林。上面的演算法中,大部分都是距離的演算法,可以通過矩陣分解後,充分利用MapRece的並行計算框架,高效地完成計算任務。
c. Mahout的空白點,還有很多的數據挖掘演算法,很難實現MapRece並行化。Mahout的現有模型,都是通用模型,直接用到的項目中,計算結果只會比隨機結果好一點點。Mahout二次開發,要求有深厚的JAVA和Hadoop的技術基礎,最好兼有 「線性代數」,「概率統計」,「演算法導論」 等的基礎知識。所以想玩轉Mahout真的不是一件容易的事情。
d. R語言同樣提供了Mahout支持的約大多數演算法(除專有演算法),並且還支持大量的Mahout不支持的演算法,演算法的增長速度比mahout快N倍。並且開發簡單,參數配置靈活,對小型數據集運算速度非常快。
雖然,Mahout同樣可以做數據挖掘和機器學習,但是和R語言的擅長領域並不重合。集百家之長,在適合的領域選擇合適的技術,才能真正地「保質保量」做軟體。
如何讓Hadoop結合R語言?
從上一節我們看到,Hadoop和R語言是可以互補的,但所介紹的場景都是Hadoop和R語言的分別處理各自的數據。一旦市場有需求,自然會有商家填補這個空白。
1). RHadoop
RHadoop是一款Hadoop和R語言的結合的產品,由RevolutionAnalytics公司開發,並將代碼開源到github社區上面。RHadoop包含三個R包 (rmr,rhdfs,rhbase),分別是對應Hadoop系統架構中的,MapRece, HDFS, HBase 三個部分。
2). RHiveRHive是一款通過R語言直接訪問Hive的工具包,是由NexR一個韓國公司研發的。
3). 重寫Mahout用R語言重寫Mahout的實現也是一種結合的思路,我也做過相關的嘗試。
4).Hadoop調用R
上面說的都是R如何調用Hadoop,當然我們也可以反相操作,打通JAVA和R的連接通道,讓Hadoop調用R的函數。但是,這部分還沒有商家做出成形的產品。
5. R和Hadoop在實際中的案例
R和Hadoop的結合,技術門檻還是有點高的。對於一個人來說,不僅要掌握Linux, Java, Hadoop, R的技術,還要具備 軟體開發,演算法,概率統計,線性代數,數據可視化,行業背景 的一些基本素質。在公司部署這套環境,同樣需要多個部門,多種人才的的配合。Hadoop運維,Hadoop演算法研發,R語言建模,R語言MapRece化,軟體開發,測試等等。所以,這樣的案例並不太多。
『肆』 R語言如何從外部讀取數據到R中
R語言如何從外部讀取數據到R中
R語言可以從鍵盤,文本,excel,access,資料庫,專業處理軟體sas
一、使用鍵盤的輸入
mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))
mydata<-edit(mydata)
二、讀入帶有分隔符文本格式的數據
data<-read.table(文件,header=true/false,sep="delimeter",row.names=列名)
其中文件可以有很多選項的
file()gzfile(),bzfile(),等一些壓縮文件以及url(http://,ftp://,smtp://)
例子:
默認的時候,字元串會自動使用factor轉化為數值型
data<-read.table("student.csv",header=TRUE,sep=",",row.names="studentid",stringsAsFactors=FALSE)
三、將xls文件導入到R中
(1)將xls變成csv的格式導入
(2)在Windows系統中,你也可以使用RODBC包來訪問Excel文件。
library(RODBC)
channel <- odbcConnectExcel("student.xls")
mydataframe<-sqlFetch(channel,"Sheet1")
odbcClose(channel)
四、抓取網頁並且提取信息
五、導入spss數據
library(Hmisc)
mydata<-spss.get("mydata.sav",use.value.labels=TRUE)
六、導入SAS數據
將sas格式的數據轉換為csv格式的數據 然後用read.table()形式導入
七、導入關系型資料庫的數據
R中有多種面向關系型資料庫管理系統(DBMS)的介面,包括Microsoft SQL Server、Microsoft Access、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。其中一些包通過原生的資料庫驅動來提供訪問功能,另一些則是通過ODBC或JDBC來實現訪問的。
(1)使用ODBC的方式導入數據
『伍』 r語言中,隨機取原本數據框90%,如何生成一個新的資料庫是存放剩下的10%的數據
train<-read.csv(file="small.dat",header=FALSE)
names(train)<-c("user","item","pref")
hs<-nrow(train)
a<-sample(hs, 0.9*hs)
trai<-train[a, ]
t <- train[-a,] ###剩下10%,相減是指行號
『陸』 如何用R語言連接和管理MYSQL資料庫
鏈接資料庫其實很簡單具體代碼如下:
package db;
import java.sql.*;
public class DB {
private Connection con=null;
private Statement stmt=null;
private ResultSet rs=null;
public DB(){}
public Connection getConnection(){
String url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8";
String dbuser="root";
String dbpass="sa";
String name="com.mysql.jdbc.Driver";
if(con==null){
try{
Class.forName(name).newInstance();
}catch(Exception e){
System.out.println(e);
}
try{
con=DriverManager.getConnection(url,dbuser,dbpass);
}catch(Exception e){}
}
return con;
}
public ResultSet exeQuery(String sql){
try{
con=getConnection();
if(con==null){
throw new Exception("沒有可連接對象");
}
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
}catch(Exception e){}
return rs;
}
public boolean update(String sql){
boolean flag=true;
try{
con=getConnection();
if(con==null) throw new Exception("沒有可連接對象");
stmt=con.createStatement();
stmt.executeUpdate(sql);
}catch(Exception e){
flag=false;
System.out.println("異常:"+e);
}
return flag;
}
public void close(){
try{
if(rs!=null)try{rs.close();}catch(Exception e){System.out.println("rs"+e);}
try{stmt.close();}catch(Exception e){System.out.println("stmt"+e);}
try{con.close();}catch(Exception e){System.out.println("con"+e);}
}catch(Exception e){}
}
『柒』 做數據分析,用R語言好還是Stata好
分析軟體:Excel、SPSS、SAS、R語言、stata、Eviews、MATLAB、Amos等 主流資料庫 sc-cpda 數據分析公眾交流平台 詳細看【我】資料
『捌』 如何加快hbase讀取數據的效率
一.工具開發背景:
業務上目前主要計算邏輯的數據源是hbase,但是我們沒有工具對hbase的數據進行單條更改造數據來驗證邏輯,之前的做法是把hbase的數據都導出來,改完再重新載入回去,或使用hbase shell介面進行更改(有一個限制就是hbase shell get 出來的數據漢字是看不出來的),效率低,也不便於自動化的回歸。測試非常的被動。
於是在師姐的建議下期望有操作hbase數據的工具來提高我們的效率,及大數據的驗證。
二.工具簡介:
工具使用java編寫的jar包,在ihbase.sh進行簡單數據處理對jar包進行調用。主要功能為數據的增刪改查,支持gbk,utf8編碼。通過配置一個xml格式的配置文件 (也可以不配置)。
三.使用方法:
1.properties.sh:在裡面配置hbase,hadoop等環境變數,裡面目前默認是我們測試集群的配置作為參考。注意一些基礎的jar包一定要有。
2.config:xml格式的配置hbase導出數據的信息。在海量導出數據或根據rowkey到處數據的時候使用。
3.ihbase.sh工具的使用介面。
四.簡要使用介紹:
操作均在bin目錄下。
一.查詢數據功能
1. ./ihbase –t table_name -rowkey rowkey -enc encoding -s
-enc encoding這個的目的是指定以什麼編碼讀出hbase數據,目前支持utf8,gbk。如果不加該參數則默認以utf讀出。
查看錶名為table_name,rowkey為rowkey的數據。
2. ./ihbase –t 表名 –k CF:COLUMN=value –k CF:COLUMN=value –w column -s
./ihbase.sh –t "test" –k "a:name=jkfs" –k "a:id=111" -w "nid" -s
查詢滿足a:name=jkfs且a:id=111的記錄,若加上-w參數,則只顯示 -w 傳進去的列。若不加-w 顯示所有列。
(這個命令一般很少用,因為使用這個=的filer需要掃hbase全表,因為這種方式很少使用,所以暫時沒考慮如何優化)
二.刪除數據功能
1. ./ihbase –t table_name –rowkey rowkey –delete
根據rowkey進行刪除。
2. ./ihbase –t table_name –k CF:COLUMN=value –k CF:COLUMN=value –delete
./ihbase –t test –k "a:id=jaks" -k "name=a:jkasj" -delete
刪除滿足a:id=jaks且a:name=jkasf的數據(目前支持and進行刪除,不支持or,原理同該方式的查詢)
三.添加數據功能
./ihbase –t table_name –rowkey rowkey –v CF:COLUMN=value –v CF:COLUMN=value -a
./ihbase.sh –t "a:test" -rowkey "111" –v "a:name=jkfs" –v "id=111" -a
添加rowkey為111的數據,後面key,value可以任意指定。如果rowkey已經存在,則報錯不進行添加。
添加數據要求必須指定rowkey
四.修改數據功能
1. ./ihbase –t table_name –rowkey rowkey –v key=value -v key=value -u
./ihbase.sh -t "test" -rowkey "1111" –v "name=jkasjd" -u
根據rowkey進行修改一條記錄的列數據
2. ./ihbase –t table_name –k key=value –k CF:COLUMN=value -v CF:COLUMN=value -u
./ihbase.sh –t test –k "a:name=jksdj" –k "mge=kjdk" –v "a:name=huanyu" -u
根據非rowkey進行修改,-k 提供修改的條件,-u 提供要修改的列的數數據。(原理同查詢,scan全表)
五.導出hbase指定列的數據(所有數據)
./ihbase -f config 此處有一個限制:就是導出表的配置文件必須放在bin的目錄下。如果不喜歡這樣也可以修改ihbase腳本進行調整。
config為配置導出表信息的xml配置
<?xml version="1.0"?>
<configuration>
<table>
<in_enc>gbk</in_enc>
<out_enc>utf8</out_enc>
<tablename>test</tablename>
<field_separator>\001</field_separator>
<record_separator>\002</record_separator>
<column>
bmw_shops:title
</column>
<outpath>/test/huanyu/hbase</outpath>
</table>
</configuration>
in_enc:hbase中的編碼,以解析hbase中數據使用的編碼。
out_enc:輸出到hdfs路徑上的編碼。
tablename:操作的表名。
field_separator:如果導出多個欄位則作為多個欄位間的分隔符。
record_separator:導出數據的行分隔符。(除了\n的字元,因為默認會分行)。
column:導出的欄位。如果不存在該欄位則導出''。
outpath:導出數據的路徑。(其實應在代碼中把這個路徑先刪除的,但是怕用戶忘記修改路徑誤刪除,所以沒有這么做)
有多少個region 啟動多少個map。
六.導出hbase指定行的指定列的數據
./ihbase -f config -rf rfile
config裡面配置導出的列,字元編碼表名等信息。
rfile 配置導出哪些rowkey的數據。(一個rowkey一行)
類似上面。
七.幫助信息
./ihbase –h
顯示幫助信息