我目前正在尝试读取一个大文件(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) 我目前有一个问题,我有一个包含开始和结束日期以及 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)
这意味着,不可能对输入进行矢量化(至少不是这样)。
有没有办法获得所需的解决方案?
我试图弄清楚如何使用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值。
有人可以帮助我从此值中检索日期吗?我认为,您需要为此提供一个时区-但由于我仅提取日期时遇到了问题,因此我首先想解决这个问题。
谢谢您的光临。
我目前正在尝试找出如何通过列参数将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)
此处将引发错误“列对象不可调用”。
是否可以对所有可能的格式采用通用方法(这样我就不必为每种格式手动添加新列)?
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 …