PySpark 在一个目录中执行所有测试用例

Posted

技术标签:

【中文标题】PySpark 在一个目录中执行所有测试用例【英文标题】:PySpark execute all test cases in a directory 【发布时间】:2016-09-02 13:14:37 【问题描述】:

我正在尝试开发一个脚本来运行保存在一个目录中的所有 spark sql 查询。 我已经能够在 Python 中做到这一点,但 pyspark 是一个不同的游戏。 下面是我用来读取和执行目录中所有查询文件的python脚本。

导入 sys,csv,sqlite3,codecs,unicodedata, string,glob, os,c conn=psycopg2.connect(数据库=“xxx”,用户=“xxxx”,密码=“xxxx”, host="localhost", port="5432") cur = conn.cursor() print("done")

with open("*.txt", "r") as ins: for line in ins: words=line.split('|') print(words) query=words[0] pmicode=words[1] 打印(查询) cur = conn.cursor() cur.execute(query) conn.commit() conn.close()

是否可以在 PySpark 中复制它?

谢谢, 潘卡伊

【问题讨论】:

【参考方案1】:

我猜你希望 pyspark 从你在这个 python 脚本中使用的 postgres 数据库中提取数据。

如果 Python 中的当前代码是这样的:

import sys, csv, sqlite3, codecs, unicodedata, string, glob, os
conn = psycopg2.connect(database="xxx", user="xxxx", password="xxxx", host="localhost", port="5432")
cur = conn.cursor()
print("done")

def runSQL(query):
    cur = conn.cursor()
    cur.execute(query)
    conn.commit()

with open("*.txt", "r") as ins:
    for line in ins:
        words = line.split('|')
        print(words)
        query = words[0]
        pmicode = words[1]
        print(query)

conn.close()

相当于使用 JDBC 连接并使用 sqlContext 执行命令:

import sys, csv, sqlite3, codecs, unicodedata, string, glob, os
postgres_url = 'jdbc:postgresql://localhost:5432/database'
properties = "user": "xxxx", "password": "xxxx"
print("done")

def runSQL(query):
    return sqlContext.read.jdbc(
        url=postgres_url,
        table="( 0 ) TEMPDB_SPARK_DELINQ".format(query)

with open("*.txt", "r") as ins:
    for line in ins:
        words = line.split('|')
        print(words)
        query = words[0]
        pmicode = words[1]
        print(query)
        runSQL(query)

【讨论】:

感谢您抽出时间回复。不幸的是,它不能解决我的用例。我正在寻找在一个目录中运行所有查询文件。上面的脚本将为 Postgres 执行此操作。但我使用的是 SparkSQL 和 PySpark 的组合。这就是“PySpark 在一个目录中执行所有测试用例”这个问题的原因。

以上是关于PySpark 在一个目录中执行所有测试用例的主要内容,如果未能解决你的问题,请参考以下文章

python测试框架:如何执行pytest测试用例

标准测试中一天能写多少测试用例?执行多少用例?这个有标准不?

pytest中的测试用例执行顺序

量角器中的测试失败会停止执行休息测试用例

go test执行多个文件夹下相同目录的用例

go test执行多个文件夹下相同目录的用例