小编Mik*_*e S的帖子

在Python 2.7中高效读取800 GB XML文件

我正在读取python 2.7中的800 GB xml文件,并使用etree迭代解析器解析它.

目前,我只使用open('foo.txt')没有缓冲参数.我有点困惑这是我应该采取的方法,还是我应该使用缓冲参数或使用io中的东西,如io.BufferedReader或io.open或io.TextIOBase.

正确方向的一点将非常感激.

python xml io file python-2.7

20
推荐指数
1
解决办法
1万
查看次数

如何使用Spark在组中滚动时间窗口

我有一些数据要按特定列分组,然后根据组中的滚动时间窗口聚合一系列字段.

以下是一些示例数据:

df = spark.createDataFrame([Row(date='2016-01-01', group_by='group1', get_avg=5, get_first=1),
                            Row(date='2016-01-10', group_by='group1', get_avg=5, get_first=2),
                            Row(date='2016-02-01', group_by='group2', get_avg=10, get_first=3),
                            Row(date='2016-02-28', group_by='group2', get_avg=20, get_first=3),
                            Row(date='2016-02-29', group_by='group2', get_avg=30, get_first=3),
                            Row(date='2016-04-02', group_by='group2', get_avg=8, get_first=4)])
Run Code Online (Sandbox Code Playgroud)

我想分组group_by,然后创建时间窗口,从最早的日期开始,并延长到30天没有该组的条目.在这30天结束后,下一个时间窗口将从下一行的日期开始,该日期不会落在上一个窗口中.

然后我想聚合,例如获得平均值get_avg和第一个结果get_first.

所以这个例子的输出应该是:

group_by    first date of window    get_avg  get_first
group1      2016-01-01              5        1
group2      2016-02-01              20       3
group2      2016-04-02              8        4
Run Code Online (Sandbox Code Playgroud)

编辑:对不起我意识到我的问题没有正确指定.我实际上想要一个在30天不活动后结束的窗口.我相应地修改了示例的group2部分.

sql window-functions apache-spark apache-spark-sql pyspark

8
推荐指数
1
解决办法
1万
查看次数

2.2GB JSON文件解析不一致

我正在尝试解码一个大的utf-8 json文件(2.2 GB).我这样加载文件:

f = codecs.open('output.json', encoding='utf-8')
data = f.read()
Run Code Online (Sandbox Code Playgroud)

如果我尝试做任何:json.load,json.loads或者json.JSONDecoder().raw_decode我得到错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-40-fc2255017b19> in <module>()
----> 1 j = jd.decode(data)

/usr/lib/python2.7/json/decoder.pyc in decode(self, s, _w)
    367         end = _w(s, end).end()
    368         if end != len(s):
--> 369             raise ValueError(errmsg("Extra data", s, end, len(s)))
    370         return obj
    371

ValueError: Extra data: line 1 column -2065998994 - line 1 column 2228968302
    (char -2065998994 - 2228968302)
Run Code Online (Sandbox Code Playgroud)


uname -m节目x86_64和 …

python unicode json utf-8

6
推荐指数
1
解决办法
285
查看次数