小编bub*_*itz的帖子

Python:使用多个核心的流程文件

我目前正在尝试读取一个大文件(8000万行),我需要为每个条目进行计算密集型矩阵乘法.计算完之后,我想将结果插入数据库.由于此过程采用时间密集的方式,我希望将文件拆分为多个核心以加快进程.

在研究之后,我发现了这个有希望的尝试,它将文件分成n个部分.

def file_block(fp, number_of_blocks, block):
    '''
    A generator that splits a file into blocks and iterates
    over the lines of one of the blocks.

    '''

    assert 0 <= block and block < number_of_blocks
    assert 0 < number_of_blocks

    fp.seek(0,2)
    file_size = fp.tell()

    ini = file_size * block / number_of_blocks
    end = file_size * (1 + block) / number_of_blocks

    if ini <= 0:
        fp.seek(0)
    else:
        fp.seek(ini-1)
        fp.readline()

    while fp.tell() < end:
        yield fp.readline()
Run Code Online (Sandbox Code Playgroud)

迭代地,您可以像这样调用函数:

if __name__ == '__main__':
    fp …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

5
推荐指数
1
解决办法
168
查看次数

展开 data.table 中的日期

我目前有一个问题,我有一个包含开始和结束日期以及 ID 的数据表。新表应该具有相同的 ID 和一列日期,包含第一天和最后一天之间的一系列天数,每行一天,即

old.table
ID          first.date               last.date
1           2001-01-01               2001-01-03
2           2002-02-01               2002-02-04

new table
ID          date
1           2001-01-01
1           2001-01-02
1           2001-01-03
2           2002-02-01
2           2002-02-02
2           2002-02-03
2           2002-02-04
Run Code Online (Sandbox Code Playgroud)

我知道,那个呼唤

seq(first.date,last.date,"day")
Run Code Online (Sandbox Code Playgroud)

创建这样一个序列。然而,调用

old.table[,date := seq(first.date,last.date,"day")])
Run Code Online (Sandbox Code Playgroud)

抛出异常

 Error in seq.Date(first.date, last.date, "day") : 
'from' must be of length 1 
Run Code Online (Sandbox Code Playgroud)

这意味着,不可能对输入进行矢量化(至少不是这样)。

有没有办法获得所需的解决方案?

r data.table

4
推荐指数
1
解决办法
1464
查看次数

Pyspark:从Datetime值中提取日期

我试图弄清楚如何使用Pyspark sql从datetime值中提取日期。

datetime值如下所示:

DateTime
2018-05-21T00:00:00.000-04:00
2016-02-22T02:00:02.234-06:00
Run Code Online (Sandbox Code Playgroud)

当我现在将其加载到spark数据框中并尝试提取日期时(通过

Date() or
Timestamp() and then Date()
Run Code Online (Sandbox Code Playgroud)

我总是会收到错误消息,期望使用日期或时间戳记值,但是提供了DateTime值。

有人可以帮助我从此值中检索日期吗?我认为,您需要为此提供一个时区-但由于我仅提取日期时遇到了问题,因此我首先想解决这个问题。

谢谢您的光临。

python datetime pyspark

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

PySpark-列的to_date格式

我目前正在尝试找出如何通过列参数将String-format参数传递给to_date pyspark函数。

具体来说,我有以下设置:

sc = SparkContext.getOrCreate()
df = sc.parallelize([('a','2018-01-01','yyyy-MM-dd'),
                      ('b','2018-02-02','yyyy-MM-dd'),
                      ('c','02-02-2018','dd-MM-yyyy')]).toDF(
                    ["col_name","value","format"])
Run Code Online (Sandbox Code Playgroud)

我当前正在尝试添加一个新列,其中将F.col(“ value”)列中的每个日期(它是一个字符串值)解析为一个日期。

对于每种格式,可以分别使用

df = df.withColumn("test1",F.to_date(F.col("value"),"yyyy-MM-dd")).\
        withColumn("test2",F.to_date(F.col("value"),"dd-MM-yyyy"))
Run Code Online (Sandbox Code Playgroud)

但是,这给了我2个新列-但我希望有1个列包含两个结果-但使用to_date函数似乎无法调用该列:

df = df.withColumn("test3",F.to_date(F.col("value"),F.col("format")))
Run Code Online (Sandbox Code Playgroud)

此处将引发错误“列对象不可调用”。

是否可以对所有可能的格式采用通用方法(这样我就不必为每种格式手动添加新列)?

apache-spark apache-spark-sql pyspark

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

Tensorflow: Neural Network does not converge

I am currently working to implement a Neural Network, which should predict a function in the range X[0,) and Y[0,).

I decided to implement the Network using Tensorflow. Moreover, I decided to use 2 layers, where the first has 50 and the second 30 nodes. As activation functions, I use the sigmoid for the hidden layers and the softplus for the output layer (to be able to get outputs larger than 1).

This setup works well for problems like a …

python neural-network tensorflow

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