使用Spark框架中的Scala IDE从Mysql数据库加载数据

时间:2016-06-02 15:13:57

标签: mysql scala apache-spark apache-spark-sql

我有这个问题。 IDE Scala给我一个错误,因为它说read中的sqlContext.read.format("jdbc").options(options)方法不属于SQLContext个对象。需要我添加一个依赖?

然后我不知道我需要为DataFrameRow对象添加哪个库。

这是代码。

import java.util.HashMap;
import java.util.Map;

import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.sql.SQLContext;



public class caricaDati {

  public static void main(String[] args) {
    Map<String, String> options = new HashMap<String, String>();
    options.put("url",
            "jdbc:mysql://localhost:3306/banche?user=..&password=...");
    options.put("dbtable", "t_analisi_banche_021");
    SparkContext sc = new SparkContext(new SparkConf().setAppName("DBConnection").setMaster("local[*]"));
    SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);
    DataFrame jdbcDF = sqlContext.read.format("jdbc").options(options);
    System.out.println("Data------------------->" + jdbcDF.toJSON().first());
    Row[] rows = jdbcDF.collect();

  }
} 

2 个答案:

答案 0 :(得分:0)

您是否尝试使用org.apache.spark.sql.hive.HiveContext?这个类很好地扩展了SQLContext的功能。

答案 1 :(得分:0)

错误在于我使用了import org.apache.spark.SparkContext;而不是import org.apache.spark.api.java.JavaSparkContext;。此外,指令DataFrame jdbcDF = sqlContext.read.format("jdbc").options(options);是错误的。它应该是DataFrame jdbcDF = sqlContext.read.format("jdbc").options(options).load();