spark2.2 查询 MySQL 的问题

问答 maxy ⋅ 于 2017-12-26 14:48:09 ⋅ 最后回复由 goldensmile 2018-02-26 19:52:49 ⋅ 4510 阅读

Dataset data = spark.read().format("jdbc")
.option("driver", "com.mysql.jdbc.Driver")
.option("url", url)
.option("dbtable", table)
.option("user", "root")
.option("password", "root").load();
data.createOrReplaceTempView("temp");
Dataset row = spark.sql("select * from temp");
row.show();
spark2.2.0去查询mysql的数据, 结果很是尴尬: 没有查出数据, 全是列名!!! 结果如下:

+---+---+----+
| id|ord|Id_k|
+---+---+----+
| id|ord|Id_k|
| id|ord|Id_k|
| id|ord|Id_k|
| id|ord|Id_k|
| id|ord|Id_k|
+---+---+----+
这是什么情况??

回复数量: 7
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2017-12-26 15:11:17
    Dataset<Row> jdbc = sqlc.jdbc("jdbc:mysql://localhost:3306/数据库?user=用户名&password=密码", "表名");
    jdbc.show(100);
  • maxy
    2017-12-26 15:20:33

    这是1.6的写法, 2.2.0已经弃用了 SQLContext。2.2.0官网是 spark.read().format("jdbc")....;

  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2017-12-26 16:18:30

    @maxy 2.2还是可以使用SQLContext的,只是不建议使用而已,未来版本会抛弃。
    你的代码我这里是没有问题的哦,给你个参照,你看看是不是那里写错了?

    package com.hainiu.spark.sql
    
    import org.apache.spark.SparkConf
    import org.apache.spark.sql.{Dataset, SparkSession}
    object SqlMysql_session {
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf()
        conf.setAppName("sqlmysql").setMaster("local")
        val spark = SparkSession.builder().appName("SparkSQLDemo").config(conf).getOrCreate()
        val data: Dataset[_] = spark.read.format("jdbc")
          .option("driver", "com.mysql.jdbc.Driver")
          .option("url", "jdbc:mysql://localhost:3306/hainiutest")
          .option("dbtable", "hainiu_web_seed")
          .option("user", "hainiu")
          .option("password", "12345678").load
        data.createOrReplaceTempView("temp")
        val row: Dataset[_] = spark.sql("select * from temp")
        row.show()
      }
    }

    file

  • maxy
    2017-12-26 16:44:12

    是的啊,多谢!!多谢!!

  • maxy
    2017-12-26 17:10:39

    这个有点坑爹, 这个url不能当参数带进去,传参就不输出数据; 必须写死在里面??

  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2017-12-26 17:39:30

    @maxy 能啊,你定义个变量不就得了

    val url:String = "jdbc:mysql://localhost:3306/hainiutest"
  • goldensmile
    2018-02-26 19:52:49

    6666

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter