TiDB的存储层(TiKV)做为spark分布式数据源事例

 

TiDB的存储层(TiKV)做为spark分布式数据源事例_第1张图片

             

TiSpark深度整合了Spark Catalyst引擎,可以对计算提供精确的控制,使Spark能够高效的读取TiKV中的数据,提供索引支持以实现高速的点查;

通过多种计算下推减少Spark SQL需要处理的数据大小,以加速查询;利用TiDB的内建的统计信息选择更优的查询计划。

从数据集群的角度看,TiSpark + TiDB可以让用户无需进行脆弱和难以维护的ETL,直接在同一个平台进行事务和分析两种工作,简化了系统架构和运维。

除此之外,用户借助TiSpark项目可以在TiDB上使用Spark生态圈提供的多种工具进行数据处理。例如使用TiSpark进行数据分析和ETL;使用TiKV作为机器学习的数据源;借助调度系统产生定时报表等等。

注:以上图片及文本来源pingcap官网https://blog.csdn.net/tidb_pingcap/article/details/76178413 

 

本环境试验脚本为python,spark(目前只支持2.1.X版本)采用Standalone与tidb集群分开部署。详细部署请参阅pingcap官网。

安装升级python参阅  python3 pip3升级

pycharm创建项目时选择python3

TiDB的存储层(TiKV)做为spark分布式数据源事例_第2张图片

下载pytispark包
pip3安装pytispark

调试脚本时可能遇到如下问题:'JavaPackage'对象不可调用,问题原因:pip下载安装的pyspark包的版本和本地运行的spark版本不一致导致

解决办法:使用本地spark安装目录下$ SPARK_HOME / python / lib / pyspark.zip替换python开发env下的对应的site_package

 

 

from pytispark.pytispark import TiContext
from pyspark.sql import SparkSession
import os

os.environ['SPARK_HOME'] = '/u01/spark'

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .master("spark://192.168.121.151:7077,192.168.121.152:7077") \
    .getOrCreate()


ti = TiContext(spark)

ti.tidbMapDatabase("test")

spark.sql("select count(*) from t_res_book").show()

spark.stop()

 

你可能感兴趣的:(python&&shell,hadoop&&spark,tidb)