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
下载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()