小编ds_*_*ser的帖子

安排启动EC2实例并在其中运行python脚本

我正在尝试在AWS中安排我的python脚本,但是我不希望实例一直在运行.因此,尝试自动化以下过程:

  1. 在特定时间启动EC2实例
  2. 在其中运行python脚本
  3. 作业完成后停止EC2实例.

我无法直接将此脚本作为Lambda函数运行,因为脚本执行一些需要更多RAM的并行处理,因此选择更大的AWS实例而不是将其编写为lambda函数.此外,不希望此实例一直在运行,因为它很昂贵.

到目前为止,我跟着使用Lambda和CloudWatch自动启动和停止AWS EC2实例·matoski.com并创建了一个Lambda函数来在特定时间启动和停止实例,但是我找不到运行python脚本的方法实例已启动.

谁能指出我正确的方向?

python amazon-ec2 amazon-web-services

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

Highmap R(或)javascript - 添加自定义图例

这是我的片段,

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)

javascript r highcharts highmaps r-highcharter

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

优化scipy最近邻搜索

我试图找到距离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万条记录),这种情况越来越大,并且由于某些点后的内存问题而停止.关于如何解决这个问题的任何想法?

python nearest-neighbor scipy python-2.7 pysal

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

python - 池映射的字典迭代器

我正在处理一组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)

python dictionary python-3.x

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

s3 中的数据分区

我们将关系数据库中的数据存储在单个表中,其中包含 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)
  1. 由于我有 7 年的数据,因此查询速度会更快。
  2. 另外,我如何在这里添加产品 ID 的分区?这样会更快。
  3. 我如何使用spark scala创建这个(s3://mybucket/year=2017/month=06/day=01/)文件夹结构,其中key=value。有什么例子吗?

hive scala amazon-s3 emr apache-spark

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

每个功能的python时间测量

我刚刚在python中编写了我的第一个程序,我已经将所有函数都写在一个模块中,我只是通过将输入文件作为参数从命令行执行它并且它起作用.但是当我给出一个大数据集时,我的程序会持续运行一段时间.现在我的下一步是找到哪个功能在我的模块中花费更多时间.我可以得到整个程序所花费的时间,但我需要单独的每个功能.

我试图理解python中的timeit和profile模块,但根据我的理解,他们给出了特定函数所花费的时间.有没有办法知道我的模块中的每个功能所用的时间作为统计数据(一次全部)?

提前致谢.

python performance time python-3.x

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

正则表达式 - 获取第一个逗号之前的所有内容 - python

我的输入数据是 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)

python regex python-2.7

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

Pandas 应用并映射到每列的每个元素

如果值不为空,如何将自定义函数应用于每列的每个元素?

假设我有一个 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)

如何摆脱这个错误?

python python-2.7 pandas pandas-apply

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

在 s3 中的多个镶木地板文件之上创建 Hive 表

我们在 s3(镶木地板文件)中有以下格式的数据集,数据根据行号划分为多个镶木地板文件。

data1_1000000.parquet
data1000001_2000000.parquet
data2000001_3000000.parquet
...
Run Code Online (Sandbox Code Playgroud)

我们有 2000 多个这样的文件,每个文件上都有数百万条记录。所有这些文件都具有相同数量的列和结构。如果我们需要在 hive 中对数据集进行分区,那么其中一列中有时间戳。我们如何指向数据集并在其上创建单个 hive 外部表以进行分析,或者可以使用 spark 进行分析?

谢谢。

hadoop hive amazon-emr apache-spark parquet

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

Python 多处理 - 进程数

我正在执行下面的代码,它工作正常,但它不会生成到不同的进程,而是有时所有代码都在同一个进程中运行,有时是两个进程合二为一。我使用的是 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 multiprocessing python-3.x python-multiprocessing

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