MySQL和MongoDB到Cassandra的PySpark ETL

2020-09-14 22:28:58

在Apache Spark/PySpark中,我们使用抽象,只有当我们想要将操作的结果具体化时,才会进行实际处理。为了连接到不同的数据库和文件系统,我们主要使用现成的库。在本文中,您将学习如何将数据与MySQL和MongoDB组合,然后将其保存在Apache Cassandra中。

使用Docker的理想时刻,或者更准确地说,Docker Compose。我们将使用Apache Spark运行所有数据库和Jupyter。

#使用根/示例作为用户/密码凭据版本:';3.1';服务:笔记本:image:jupyter/all-spark-notebook ports:-8888:8888-4040:4040卷:-./work:/home/jovyan/work Cassandra:image:';bitnami/Cassandra:Latest';MOGO:IMAGE:MOGO环境:MOGO_INITDB_ROOT_USERNAME:ROOT MOGO_INITDB_ROOT_PASSWORD:示例MySQL:IMAGE:MYSQL:5.7环境:MYSQL_DATABASE:';School';MySQL_USER:';USER';MYSQL_PASSWORD:';PASSWORD';MYSQL_ROOT_PASSWORD:';PASSWORD';

我们需要一些数据。我用Python编写了一个简单的脚本。让我们假设Mongo中有学生的数据。

在MySQL中,我们有一个包含组的字典表。我们需要创建一个表并向其中添加数据。

如果我们想要将数据上传到Cassandra,我们需要在那里创建一个密钥空间和一个相应的表。Cassandra在Docker,所以我们必须进去运行cqlsh。

使用Replication={';class&39;:';SimpleStrategy';,';Replication_factor';:';1';};创建KEYSPACE学校。学生表(姓名文本,姓氏文本,年龄int,group_id int,group_number文本,技能集<;文本&>t;,Something_Important int,主键(姓名,姓氏));;

模式是虚构的,所以不要在其中寻找任何意义。在Apache Cassandra中,数据建模是特定的。在“非训练”条件下,数据应该被正确建模。

我们需要使用PYSPARK_SUBMIT_ARGS变量提供适当的库并配置源代码。如您所见,代码并不复杂。所有的工作都由图书馆接管。

最初我想写W.W.。使用Jupyter中的Spron内核的Scala代码。不幸的是,MongoDB的库有问题。PySpark和Spark-Shell可以毫不费力地处理它。