是否可以在MS SQL Server中使用python多处理功能

如何解决是否可以在MS SQL Server中使用python多处理功能

我们每天早上都在使用MS sql Server和外部python脚本来查询统计数据库,该数据库返回JSON-Stat。然后,我们通过Pyjstat函数from_json_stat()运行该JSON-Stat,将其从JSON-Stat转换为MS sql Server可以读取的pandas DataFrame。

在这个国家统计数据库中最大的表格上,这可能需要7到10分钟的时间,我们想到了使用python的多处理程序来至少加快from_json_stat的速度。在python中运行代码可以完美地工作,但是,当我们随后通过Microsoft的sql Management Studio运行代码时,在我们试图加快速度的那个函数上遇到了一个pickle错误

这是相关的代码,它在python中有效,我们可以最大程度地加快最大查询的速度,但不能通过SSMS的python外部脚本进行。


def run_pyjstat(result_list):
    return pyjstat.from_json_stat(result_list.json(object_pairs_hook=OrderedDict),naming="id")[0]

def post_query():    
    Meta_data = Meta_filter()
    result_list = []

    for variables in Meta_data:
        query = build_query(variables)
        data = requests.post(ssb_table.Metadata_url,json=query)
        result_list.append(data)
        time.sleep(5.0)
    return result_list

def master():
    dataframes = []
    x = post_query()
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    dataframes = pool.map(run_pyjstat,x)
    pool.close()
    pool.join()
    big_df = pd.concat(dataframes,ignore_index=True)
    return big_df

if __name__ == "__main__":
    ssb_table = SSBTable(TableNumber)
    klass = RegionKLASS(["131","104","214","231"])
    r = master()

这是我们得到的错误,也是我们一直得到的错误

Error in execution.  Check the output for more information.
Traceback (most recent call last):
  File "<string>",line 5,in <module>
  File "D:\sql-MSsqlSERVER-ExtensibilityData-PY\MSsqlSERVER01\0ECB2A7F-0698-4FA7-86E6-76EF41292E20\sqlindb.py",line 691,in transform
    r = master()
  File "D:\sql-MSsqlSERVER-ExtensibilityData-PY\MSsqlSERVER01\0ECB2A7F-0698-4FA7-86E6-76EF41292E20\sqlindb.py",line 667,in master
    dataframes = pool.map(run_pyjstat,x)
  File "C:\Program Files\Microsoft sql Server\MSsql14.MSsqlSERVER\PYTHON_SERVICES\lib\multiprocessing\pool.py",line 260,in map
    return self._map_async(func,iterable,mapstar,chunksize).get()
  File "C:\Program Files\Microsoft sql Server\MSsql14.MSsqlSERVER\PYTHON_SERVICES\lib\multiprocessing\pool.py",line 608,in get
    raise self._value
  File "C:\Program Files\Microsoft sql Server\MSsql14.MSsqlSERVER\PYTHON_SERVICES\lib\multiprocessing\pool.py",line 385,in _handle_tasks

Msg 39019,Level 16,State 2,Line 2
An external script error occurred: 
    put(task)
  File "C:\Program Files\Microsoft sql Server\MSsql14.MSsqlSERVER\PYTHON_SERVICES\lib\multiprocessing\connection.py",line 206,in send
    self._send_bytes(ForkingPickler.dumps(obj))
  File "C:\Program Files\Microsoft sql Server\MSsql14.MSsqlSERVER\PYTHON_SERVICES\lib\multiprocessing\reduction.py",line 50,in dumps
    cls(buf,protocol).dump(obj)
AttributeError: Can't pickle local object 'transform.<locals>.run_pyjstat'

sqlSatelliteCall error: Error in execution.  Check the output for more information.

我们俩都是这个项目的大三学生,主要在学校中使用Java。我们没有其他开发人员可以在此前提下询问,而在google上进行搜索并不会在此特定问题上产生很多结果。也许我的Google搜索技能不好。

我们已经考虑脱离MS sql Server external_script并使用Java,但是目前它无需多处理即可运行,尽管比我们想要的要慢。

有什么办法可以使它与python外部脚本一起使用?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?