• 项目实战从0到1之Spark(6)Spark 读取mysql中的数据


    Spark(直接读取mysql中的数据)

    两种方法的目的:进行mysql数据的数据清洗

    方法一:

    ①执行

    [root@head42 spark]# spark-shell --jars /opt/spark/jars/mysql-connector-java-5.1.38.jar
    

    ②执行

    val df=spark.read.format("jdbc").option("delimiter",",").option("header","true").option("url","jdbc:mysql://192.168.56.103:3306/test").option("dbtable","customer").option("user","root").option("password","ok").load()
    #"dbtable":mysql表名
    df.show
    

    若是出现:java.sql.SQLException: No suitable driver

    执行

    [root@head42 ~]# cd /opt/hive/lib/
    [root@head42 lib]# cp mysql-connector-java-5.1.38.jar /opt/spark/jars/
    

    再重新运行上面代码

    ============================================================

    方法二:

    ①创建sqoop,执行sqoop

    #!/bin/bash
    sqoop import 
    --connect jdbc:mysql://localhost:3306/test 	#test:mysql的数据库
    --table table_name 	
    --username root 
    --password ok 
    --target-dir /data/mydata13  #指定数据存储在hdfs的路径
    -m 1 #指定分几块
    

    ②进入hive创建外部表(外部表的数据是存储在hdfs上的)

    create external table orders(
    order_id int,
    order_date timestamp,
    order_customer_id int,
    order_status string
    )
    row format delimited
    fields terminated by ','
    location '/data/mydata1'
    

    然后在执行以下命令就可以在spark上进行数据的清洗

    Spark 连接hive 元数据库(mysql)

    方法一:

    1)打开Hive metastore
    [root@head42 ~]# hive --service metastore &
    netstat -ano|grep 9083   ???
    2)开启spark连接Mysql
    [root@head42 ~]# spark-shell --conf spark.hadoop.hive.metastore.uris=thrift://localhost:9083
    3)scala> spark.sql("show tables").show
    spark.sql("select * from database_name.table_name")//访问其他数据库
    +--------+--------------+-----------+
    |database|     tableName|isTemporary|
    +--------+--------------+-----------+
    | default|      customer|      false|
    | default|text_customers|      false|
    +--------+--------------+-----------+
    这样就Ok了!
    

    方法二:

    1)拷贝hive的hive-site.xml文件到spark的conf目录下

    2)修改spark中hive-site.xml文件

    添加以下:
    <configuration>
    <property>
      <name>hive.metastore.uris</name>
     <value>thrift://localhost:9083</value>
    </property>
    </configuration>
    

    3)另建窗口启动:

    [root@head42 conf]# hive --service metastore
    

    4)启动spark:

    [root@head42 conf]# spark-shell
    

    5)测试:

    spark.sql("select * from database_name.table_name").show//访问其他数据库的表格
    scala> spark.sql("show tables").show
    +--------+--------------+-----------+
    |database|     tableName|isTemporary|
    +--------+--------------+-----------+
    | default|      customer|      false|
    | default|text_customers|      false|
    +--------+--------------+-----------+
    这样就OK了!
    
    作者:大码王

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•?ω•?)っ???!

  • 相关阅读:
    CF932E Team Work
    BZOJ 4480 [JSOI2013] 快乐的jyy
    CF285E Positions in Permutations
    P4312 [COCI 2009] OTOCI / 极地旅行社
    P3327 [SDOI2015]约数个数和
    P3649 [APIO2014]回文串
    P3181 [HAOI2016]找相同字符
    P3346 [ZJOI2015]诸神眷顾的幻想乡
    P4248 [AHOI2013]差异
    P4512 【模板】多项式除法
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13633979.html
Copyright © 2020-2023  润新知