Python与 Hive & Spark & MYSQL连接方式汇总

一、python连接Hive

1、需要知道集群的参数

host :地址

port: 端口号

database:数据库

user: 用户名

auth_mechanism:依赖于hive-site.xml配置文件

password:密码(可有可无)

2、连接及使用:

# -*- coding: utf-8 -*-
import pandas as pd
from impala import dbapi
import numpy as np

#连接参数配置
hive_connection = {'host':'10.xxx.x.x',    
                   'port':8990, 
                   'user':'security_hive', 
                   'auth_mechanism':'PLAIN',
                   'database':'security_sh'}

#hive相关参数配置(可根据实际情况增加)
hive_config = {'mapreduce.reduce.memory.mb': '8192',
              'mapreduce.reduce.java.opts': '-Xmx7373m',
              'mapreduce.map.memory.mb':  '4096',
              'mapreduce.map.java.opts': '-Xmx3276m'}


#连接hive
conn_hive = dbapi.connect(**hive_connection)
cur_hive = conn_hive.cursor()

#sql脚本及运行
hive_sql = "SELECT userid,count(*) AS pv " \
             "FROM %s.%s " \
            "WHERE d = %s " \
            "GROUP BY userid" % (security_sh, security_user_pv_detail, day)	
cur_hive.execute(hive_sql, configuration=hive_config)
df_get = cur_hive.fetchall()

#注:df_get的数据类型为dataframe

二、python连接Spark

python连接spark相对简单,只需要本地机器链接集群后可直接进行操作。

连接及使用

# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
from pyspark.sql import SparkSession

#建立连接对象
spark = SparkSession.builder \
      .master("yarn") \                #连接方式:yarn方式
      .appName("python_spark") \       #命名别名
      .enableHiveSupport() \
      .getOrCreate()

#注:上述master连接方式一定要以yarn方式进行链接,否则如果表数据量较大的话,读取数据会非常的慢


#链接spark执行sql命令
spark_sql = "SELECT userid,count(*) AS pv " \
              "FROM %s.%s " \
             "WHERE d = %s " \
             "GROUP BY userid" % (security_sh, security_user_pv_detail, day)	

df_get = spark.sql(spark_sql)   #此时得到的df_get为spark的dataframe格式,因此需要做一定的转换
df_get = df_get.toPandas()      #转换成python可处理的dataframe类型

三、python连接mysql

可使用python连接mysql进行读写操作

连接及使用

# -*- coding: utf-8 -*-
ca
import pandas as pd
import pymysql
import numpy as np
import sys
import os

#连接参数配置
mysql_connection ={'host':'10.xxx.xxx.xx', 
                   'user':'security_user',  
                   'passwd':'xxx', 
                   'db':'security_sh', 
                   'port':6806, 
                   'charset':'utf8',
                   'connect_timeout':60}

#连接mysql及执行sql
mysql_sql= f"""
             SELECT userid,count(*) AS pv 
               FROM security_sh.security_user_pv_detail 
              WHERE d = day 
              GROUP BY userid
             """
conn_mysql = pymysql.connect(**mysql_connection)
cur_mysql = conn_mysql.cursor()
cur_mysql.execute(mysql_sql)
get_data = cur_mysql.fetchall()
conn_mysql.close()

##################################################################
#利用python向mysql数据库写数据
##################################################################

#df是存有原始数据的数据框
data = np.array(df).tolist()

#连接MySQL并写入数据
print(f"{datetime.datetime.now()} : Insert into MySQL...")
conn_mysql = pymysql.connect(**mysql_connection)
cur_mysql = conn_mysql.cursor()


mysql_sql= ("INSERT INTO security_user_pv_detail (userid, pv) VALUES (%s,%s) "
             "ON DUPLICATE KEY UPDATE "
             "userid = values(userid), pv = values(pv)")

cur_mysql.executemany(mysql_sql, data)
conn_mysql.commit()
print(f"{datetime.datetime.now()} : Insert into MySQL done!")

以上为python连接hive、spark、mysql的连接方式及使用 ,在实际使用中还有hive数据写入到mysql数据,mysql数据读入到hive表,这个后续在添加吧。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python可以通过以下方式连接HiveSparkMySQL: 1. Hive连接方式: - 使用pyhive连接Hive:pyhive是一个Python库,可以通过它连接Hive。需要安装pyhive和thrift库,然后使用pyhive.connect()方法连接Hive。 - 使用pyhs2库连接Hive:pyhs2是另一个Python库,可以连接Hive。需要安装pyhs2和thrift库,然后使用pyhs2.connect()方法连接Hive。 2. Spark连接方式: - 使用pyspark连接Spark:pyspark是一个Python库,可以连接Spark。需要安装pyspark库,然后使用SparkSession.builder.appName()方法创建SparkSession对象,从而连接Spark。 3. MySQL连接方式: - 使用pymysql连接MySQL:pymysql是一个Python库,可以连接MySQL。需要安装pymysql库,然后使用pymysql.connect()方法连接MySQL。 - 使用mysql-connector-python连接MySQLmysql-connector-python是另一个Python库,可以连接MySQL。需要安装mysql-connector-python库,然后使用mysql.connector.connect()方法连接MySQL。 ### 回答2: PythonHive都是在数据处理领域应用非常广泛的工具,它们分别有着各自的优点和适用场景。 Python作为一种高级编程语言,拥有简洁明了的语法,非常适合用于数据分析和机器学习等领域的编程。Python的强大之处主要体现在其丰富的第三方库和工具上。例如,NumPy、Pandas、Matplotlib和Scikit-learn等库,提供了非常丰富的数据处理和分析工具,可以快速高效地进行数据处理和可视化分析。此外,Python还支持多种数据格式的读写和转换,如JSON、CSV、Excel等,方便用户进行非常灵活、精确和高效的数据处理。 Hive则是基于Hadoop平台的一种数据仓库解决方案,其优点主要在于其分布式数据处理能力。Hive使用HQL(Hive Query Language)来进行数据查询和转换,其语法类似于SQL,十分显式和易懂。同时,Hive支持多种文件存储格式,如ORC、Parquet等,这些文件格式可对数据进行压缩、格式转换和序列化等操作,提高数据查询和处理的效率。 与Python相比,Hive的强大之处在于其支持分布式集群环境下的大数据处理,可以处理TB级甚至更大规模的数据集。而Python适合处理较小规模的数据集,具有更灵活、易用和迭代化的特点,可以适用更多的数据处理应用场景。 在实际的数据处理应用中,PythonHive可以互补使用。例如,在处理数据集较小的场合下,可以使用Python来进行数据清洗、处理和分析,最后将数据存储到Hive中进行查询和存储。而在处理较大数据集的场合下,Hive可以作为数据仓库来进行数据存储和查询,同时可以使用Python在集群环境下编写UDF(User Defined Function),进行更加复杂和高效的数据计算和处理。 综上所述,PythonHive都是非常优秀的数据处理工具,它们根据不同的应用场景和需求,可以灵活地进行选择和搭配,从而提高数据处理的效率和质量。 ### 回答3: PythonHive都是非常流行的数据处理工具,二者有着各自的优缺点和适用范围。 Python是一种高级编程语言,广泛应用于数据处理、科学计算、Web开发和人工智能等领域,具有简洁、易学、可读性强等特点。对于数据分析与处理来说,Python有着灵活的语法和丰富的数据处理库,如NumPy,Pandas和Scipy等,可以快速实现数据清洗、处理、分析等操作。Python还提供了大量的可视化工具,如Matplotlib和Seaborn等,可以轻松生成各种图表和可视化分析结果。 Hive是一种基于Hadoop的数据仓库解决方案,专门用于处理大规模数据集,具有分布式的,可扩展的,高效的特点。Hive使用SQL-like的查询语言HQL(Hive Query Language),可以将复杂的MapReduce任务转化为SQL查询,可以进行快速的数据分析和查询。Hive提供了丰富的内置函数、数据类型和聚合函数等,可以方便地进行数据清洗和分析,同时支持自定义函数和UDFs,满足用户的个性化需求。 从功能特点上来看,Python适用于数据分析、建模和可视化等领域,可以方便地进行数据清洗、处理和分析,尤其对于小规模和中等规模的数据集处理效率高。而Hive则专注于大规模数据集的处理和分析,能够高效地处理PB级别的数据,但由于Hive属于批处理框架,不适合实时数据处理。 综上所述,PythonHive各自有各自的优势和适用场景,具体应该根据实际需求来选择使用哪种工具。在实际应用中,PythonHive也可以相互配合,Python可用于数据清洗和预处理,Hive可用于海量数据处理和分析,从而构建高效、可靠的数据处理与分析体系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值