2015年10月1日 星期四

在Eclipse上使用 Spark SQLContext by JDBC with Java

緊接著上一篇,畢竟開發程式不是在shell中執行(shell可用來測試)
而且小弟對於 Scala or Python不是特別熟悉(不然前面建個Eclipse + Java 做啥XD)

以下是我的範例程式碼 
內容及目的跟前一篇一樣,搜尋資料庫某個Table中的某個欄位的前8筆資料

程式說明如下:
首先建置了一個名為 SparkJDBCExample的class  (開發環境請參考使用Scale IDE with Eclipse 開發第一個Spark JAVA程式)
首先初始化一個 JavaSparkContext
再使用 sc 建立 sqlContext
DataFrame是 Spark中已經回傳的資料物件可以透過它來呼叫SparkAPI

完成程式碼:
import java.util.HashMap;
import java.util.Map;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;


public class SparkJDBCExample {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("Simple Application");
   JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
Map<String, String> options = new HashMap<String, String>();
options.put("url", "jdbc:oracle:thin:user/password@localhost:1521:orcl");
options.put("dbtable", "ams_user");

DataFrame jdbcDF = sqlContext.read().format("jdbc"). options(options).load();
jdbcDF.select("USER_LOGIN_NAME").show(8);
}

}


完成後請照著先前文章的步驟
(1)Export JAR
(2)Copy to your spark environment
(3)Download ojdbc6.jar
(4)執行 Command(至所有jar檔的目錄下)
#spark-submit --driver-class-path ojdbc6 --class "SparkJDBCExample" SparkJDBCExample.jar
我的結果如下



這樣的結果是否跟之前在 spark-shell中執行的scala程式一樣呢!


沒有留言:

張貼留言