1. 程式人生 > >hive on spark開發demo

hive on spark開發demo

public class SparkHiveTest {
    public static void main(String[] args)
    {
        String warehouseLocation = "hdfs://10.1X4.XX2.XX2:9001/home/spark/ive/warehouse/";

        SparkSession spark = SparkSession.builder().appName
                ("Java Spark Hive Example")
                .master("local[4]")
                .config("spark.sql.warehouse.dir", warehouseLocation)
                .enableHiveSupport()
                .getOrCreate();

        Dataset<Row> df = spark.sql("SELECT * FROM test1");
        df.show();
        Dataset<Row> df2 = spark.sql("SELECT * FROM test2");
        df2.show();
        Dataset<Row> df3 = spark.sql("SELECT id,name FROM test1 where name = 'lucy'");
        System.out.println("#############name = lucy  size:"+ df3.count());
        spark.stop();
    }
}

基於Java Api的spark操作hivedemo:

  • warehouseLocation : 是hive資料表的存放位置,即hive的warehouse
  • .config(“spark.sql.warehouse.dir”, warehouseLocation):配置warehouse
  • .enableHiveSupport():開啟sparksession中的hivesupport

介紹了三個例子:

  • 第一個是讀取test1中全部資料,select * 是不生成mapreduce任務的,這是直接載入的hdfs檔案
  • 第二個是讀取test2中的全部資料,同樣不生成嗎mapreduce任務,這裡要注意的就是hive的warehouse一定得明確,要不然這個操作可能失敗
  • 第三個是按照條件載入hive表資料,這裡會產生MapReduce任務,並將結果返回生產一個dataset。