我正在尝试在AWS中安排我的python脚本,但是我不希望实例一直在运行.因此,尝试自动化以下过程:
我无法直接将此脚本作为Lambda函数运行,因为脚本执行一些需要更多RAM的并行处理,因此选择更大的AWS实例而不是将其编写为lambda函数.此外,不希望此实例一直在运行,因为它很昂贵.
到目前为止,我跟着使用Lambda和CloudWatch自动启动和停止AWS EC2实例·matoski.com并创建了一个Lambda函数来在特定时间启动和停止实例,但是我找不到运行python脚本的方法实例已启动.
谁能指出我正确的方向?
这是我的片段,
output$map <- renderHighchart({
region_map = hcmap("countries/nz/nz-all")
highchart(type = "map") %>%
hc_title(text = "Average") %>%
hc_add_series_map(map = region_map, df = data1, joinBy = "name", value = "LTA", borderColor = "#141B4D",
color = "color",
showInLegend = TRUE,
borderWidth = 1)
) %>%
hc_tooltip(useHTML = TRUE, headerFormat ="", pointFormat = "{point.name} <br> LTA: {point.value}") %>%
})
Run Code Online (Sandbox Code Playgroud)
我的数据在这里,
structure(list(name = c("Auckland", "Bay of Plenty", "Canterbury",
"Central North Island", "Central Otago / Lakes District", "Coromandel"
), LTA = c(23, 42, 25, 69, 71, 145), …Run Code Online (Sandbox Code Playgroud) 我试图找到距离1公里范围内的所有最近邻居.这是我构建树和搜索最近点的脚本,
from pysal.cg.kdtree import KDTree
def construct_tree(s):
data_geopoints = [tuple(x) for x in s[['longitude','latitude']].to_records(index=False)]
tree = KDTree(data_geopoints, distance_metric='Arc', radius=pysal.cg.RADIUS_EARTH_KM)
return tree
def get_neighbors(s,tree):
indices = tree.query_ball_point(s, 1)
return indices
#Constructing the tree for search
tree = construct_tree(data)
#Finding the nearest neighbours within 1KM
data['neighborhood'] = data['lat_long'].apply(lambda row: get_neighbors(row,tree))
Run Code Online (Sandbox Code Playgroud)
从我在pysal页面上看到的内容,它说 -
kd-tree建立在scipy的kd-tree功能之上.如果使用scipy 0.12或更高版本使用scipy.spatial.cKDTree,否则使用scipy.spatial.KDTree.
在我的情况下,它应该使用cKDTree.这适用于样本数据集,但由于tree.query_ball_point返回索引列表作为结果.每个列表将包含100个元素.对于我的数据点(200万条记录),这种情况越来越大,并且由于某些点后的内存问题而停止.关于如何解决这个问题的任何想法?
我正在处理一组frozensets.我试图在字典"输出"中找到每个冻结集的最小集合.我有70k frozensets,所以我正在制作这个冻结字典的大块并且并行化这个任务.当我尝试将此字典作为输入传递给我的函数时,只发送了密钥,因此我收到错误,有人可以帮我找到错误.
output => {frozenset({'rfid', 'zone'}): 0, frozenset({'zone'}): 0, frozenset({'zone', 'time'}): 0}
def reduce(prob,result,output):
print(output)
for k in output.keys():
#Function to do something
def reducer(prob,result,output):
print(output)
p = Pool(4) #number of processes = number of CPUs
func2 = partial(reduce,prob,result)
reduced_values= p.map( func2,output,chunksize=4)
p.close() # no more tasks
p.join() # wrap up current tasks
return reduced_values
if __name__ == '__main__':
final = reducer(prob,result,output)
{frozenset({'rfid', 'zone'}): 0, frozenset({'zone'}): 0, frozenset({'zone', 'time'}): 0}
frozenset({'rfid', 'zone'})
Error : AttributeError: 'frozenset' object has no attribute …Run Code Online (Sandbox Code Playgroud) 我们将关系数据库中的数据存储在单个表中,其中包含 id 和 date 列。
productid date value1 value2
1 2005-10-26 24 27
1 2005-10-27 22 28
2 2005-10-26 12 18
Run Code Online (Sandbox Code Playgroud)
尝试将它们作为 parquet 加载到 s3 并在 hive 中创建元数据以使用 athena 和 redshift 查询它们。我们最常见的查询是按产品 ID、日、月和年进行过滤。因此尝试以一种具有更好查询性能的方式加载数据分区。
据我了解,我可以像这样创建分区
s3://my-bucket/my-dataset/dt=2017-07-01/
...
s3://my-bucket/my-dataset/dt=2017-07-09/
s3://my-bucket/my-dataset/dt=2017-07-10/
Run Code Online (Sandbox Code Playgroud)
或者像这样,
s3://mybucket/year=2017/month=06/day=01/
s3://mybucket/year=2017/month=06/day=02/
...
s3://mybucket/year=2017/month=08/day=31/
Run Code Online (Sandbox Code Playgroud)
我刚刚在python中编写了我的第一个程序,我已经将所有函数都写在一个模块中,我只是通过将输入文件作为参数从命令行执行它并且它起作用.但是当我给出一个大数据集时,我的程序会持续运行一段时间.现在我的下一步是找到哪个功能在我的模块中花费更多时间.我可以得到整个程序所花费的时间,但我需要单独的每个功能.
我试图理解python中的timeit和profile模块,但根据我的理解,他们给出了特定函数所花费的时间.有没有办法知道我的模块中的每个功能所用的时间作为统计数据(一次全部)?
提前致谢.
我的输入数据是 utf8 编码的。
我在输入上应用正则表达式来查找逗号之前的所有内容。
然而我的正则表达式返回None,尽管我可以直观地看到逗号。
它出什么问题了?
我测试了 if ','in MyString,效果很好。
这是我的输入数据:
ID MyString
765427 Units G2 and G3, kings Drive
207162 Unit 5/165,Elizabeth Palace
47568 Unit 766 - 767 Gate 7,Jacks Way,
15498 Unit F, Himalayas Street,
Run Code Online (Sandbox Code Playgroud)
根据我的正则表达式 - re.search(r".*?,", s['MyString']),
我希望我的输出是:
ID MyString
765427 Units G2 and G3,
207162 Unit 5/165,
47568 Unit 766 - 767 Gate 7,
15498 Unit F,
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
ID MyString
765427 Units G2 and G3,
207162 None
47568 Unit 766 …Run Code Online (Sandbox Code Playgroud) 如果值不为空,如何将自定义函数应用于每列的每个元素?
假设我有一个 10 列的数据框,如果 pd.notnull(x),我想将 lower() 函数应用于仅 4 列的每个元素,否则只保留 None 作为值。
我尝试这样使用,
s.apply(lambda x: change_to_lowercase(x), axis = 1)
def change_to_lowercase(s):
s['A'] = s['A'].map(lambda x: x.lower() if pd.notnull(x) else x)
s['B'] = s['B'].map(lambda x: x.lower() if pd.notnull(x) else x)
s['C'] = s['C'].map(lambda x: x.lower() if pd.notnull(x) else x)
s['D'] = s['D'].map(lambda x: x.lower() if pd.notnull(x) else x)
return s
Run Code Online (Sandbox Code Playgroud)
但由于我的列是混合数据类型(NaN 作为 float,其余为 unicode)。这给我带来了一个错误 -
float has no attribute map.
Run Code Online (Sandbox Code Playgroud)
如何摆脱这个错误?
我们在 s3(镶木地板文件)中有以下格式的数据集,数据根据行号划分为多个镶木地板文件。
data1_1000000.parquet
data1000001_2000000.parquet
data2000001_3000000.parquet
...
Run Code Online (Sandbox Code Playgroud)
我们有 2000 多个这样的文件,每个文件上都有数百万条记录。所有这些文件都具有相同数量的列和结构。如果我们需要在 hive 中对数据集进行分区,那么其中一列中有时间戳。我们如何指向数据集并在其上创建单个 hive 外部表以进行分析,或者可以使用 spark 进行分析?
谢谢。
我正在执行下面的代码,它工作正常,但它不会生成到不同的进程,而是有时所有代码都在同一个进程中运行,有时是两个进程合二为一。我使用的是 4 个 cpu 的机器。这段代码有什么问题吗?
def f(values):
print(multiprocessing.current_process())
return values
def main():
p = Pool(4) #number of processes = number of CPUs
keys, values= zip(*data.items()) #ordered keys and values
processed_values= p.map( f, values )
result= dict( zip(keys, processed_values ) )
p.close() # no more tasks
p.join() # wrap up current tasks
Run Code Online (Sandbox Code Playgroud)
结果是
<SpawnProcess(SpawnPoolWorker-1, started daemon)>
<SpawnProcess(SpawnPoolWorker-1, started daemon)>
<SpawnProcess(SpawnPoolWorker-1, started daemon)>
<SpawnProcess(SpawnPoolWorker-1, started daemon)>
Run Code Online (Sandbox Code Playgroud)
而有时也像这样,
<SpawnProcess(SpawnPoolWorker-3, started daemon)>
<SpawnProcess(SpawnPoolWorker-2, started daemon)>
<SpawnProcess(SpawnPoolWorker-1, started daemon)>
<SpawnProcess(SpawnPoolWorker-3, started daemon)>
Run Code Online (Sandbox Code Playgroud)
有时,
<SpawnProcess(SpawnPoolWorker-1, started …Run Code Online (Sandbox Code Playgroud) python ×7
python-2.7 ×3
python-3.x ×3
apache-spark ×2
hive ×2
amazon-ec2 ×1
amazon-emr ×1
amazon-s3 ×1
dictionary ×1
emr ×1
hadoop ×1
highcharts ×1
highmaps ×1
javascript ×1
pandas ×1
pandas-apply ×1
parquet ×1
performance ×1
pysal ×1
r ×1
regex ×1
scala ×1
scipy ×1
time ×1