小编Gas*_*ove的帖子

Python,Keyring和Cron

我正在使用cron(在Ubuntu 12.04上)运行python脚本 - 很简单.除了身份验证.

cron脚本访问几个服务,并且必须提供凭据.存储这些凭据keyring很容易 - 除了当cron作业实际运行时,无法检索凭据.脚本每次都失败了.

就像我所知道的那样,这与cron运行的环境有关.我追踪了一组帖子,这些帖子表明关键是脚本导出DBUS_SESSION_BUS_ADDRESS.一切都很好 - 我可以很容易地获得该地址并将其导出并从Python中获取 - 但它只是生成一个新错误:Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.设置DISPLAY=:0无效.

所以.有没有人想出如何从在Ubuntu 12.04上的cron作业上运行的Python解锁gnome-keyring?

python ubuntu cron

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

Julia中的多维数组理解

我正在和Julia讨厌,似乎无法让多维数组理解起作用.我正在为OSX使用0.20-pre的夜间版本; 这可能是构建中的一个错误.但我怀疑,这是用户的一个错误.

让我们说我想结束这样的事情:

5x2 Array
1 6
2 7
3 8
4 9
5 10
Run Code Online (Sandbox Code Playgroud)

而且我不想只是打电话reshape.据我所知,应该生成一个多维数组,如:[(x, y) for x in 1:5, y in 6:10].但是这会生成一个5x5的元组数组:

julia> [(x, y) for x in 1:5, y in 6:10]
5x5 Array{(Int64,Int64),2}:
 (1,6)  (1,7)  (1,8)  (1,9)  (1,10)
 (2,6)  (2,7)  (2,8)  (2,9)  (2,10)
 (3,6)  (3,7)  (3,8)  (3,9)  (3,10)
 (4,6)  (4,7)  (4,8)  (4,9)  (4,10)
 (5,6)  (5,7)  (5,8)  (5,9)  (5,10)
Run Code Online (Sandbox Code Playgroud)

或者,也许我想为每个生成一组值和一个布尔代码:

5x2 Array
1 false
2 false
3 false
4 false
5 false
Run Code Online (Sandbox Code Playgroud)

再一次,我似乎只能创建一个元组数组{(x, …

julia

8
推荐指数
2
解决办法
7020
查看次数

与IBM Netezza Erroring的Python pyodbc连接

所以.这个问题与这里讨论的问题几乎完全相同- 但是该帖子中讨论的修复(例如它)并不能解决问题.

我正在尝试使用Python 2.7.5和pyodbc 3.0.7从Ubuntu 12.04 64位机器连接到IBM Netezza数据库.我正在使用unixODBC来处理指定DSN.这个DSN在isqlCLI中工作得非常好- 所以我知道它配置正确,unixODBC正在顺利进行.

代码目前很简单,并且很容易在REPL中重现:

In [1]: import pyodbc
In [2]: conn = pyodbc.connect(dsn='NZSQL')
In [3]: curs = conn.cursor()
In [4]: curs.execute("SELECT * FROM DB..FOO ORDER BY created_on DESC LIMIT 10")
Out[4]: <pyodbc.Cursor at 0x1a70ab0>

In [5]: curs.fetchall()
---------------------------------------------------------------------------
InvalidOperation                          Traceback (most recent call last)
<ipython-input-5-ad813e4432e9> in <module>()
----> 1 curs.fetchall()

/usr/lib/python2.7/decimal.pyc in __new__(cls, value, context)
    546                     context = getcontext()
    547                 return context._raise_error(ConversionSyntax,
--> 548                                 "Invalid literal for Decimal: %r" % …
Run Code Online (Sandbox Code Playgroud)

python odbc pyodbc netezza

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

在`Pipenv`中定义shell入口点的规范方法?

使用setuptools,我习惯于能够定义一个setup.py提供“控制台脚本”的东西——比如:

entry_points={
  'console_scripts': [ 'app=app:main']
  }
Run Code Online (Sandbox Code Playgroud)

如果我现在安装我的项目(python setup.py installpip install -e .等),我可以通过调用./app. 这为我的应用程序提供了一种分发机制,现在可以pip install从 pypi/devpi 全局 - ed,无论是本地机器用于某种实用程序,还是作为某种应用程序部署的一部分在 Docker 映像中。

我现在试图了解pipenv. 文档告诉我,我应该更喜欢pipenv用于应用程序开发,并坚持使用setuptools库。这很好,但是是否有任何机制可以在pipenv“脚本”之外对我的应用程序进行“生产”安装?或者假设人们会说,pipenv install --system然后直接在应用程序入口点上调用解释器?

这里的系统是什么?

python pipenv

6
推荐指数
0
解决办法
350
查看次数

Spark和Parquet:读取分区数据

SparkSQL有一个很好的技巧:它将读取您的镶木地板数据,正确地从镶木地板的元数据中读取模式.更重要的是:如果您使用key=value模式对数据进行分区,SparkSQL将自动递归目录结构,将其value作为一个名为的列读取key.关于此的文档 - 以及一个非常明确的例子 - 在这里.

不幸的是,我的数据以一种适用于Cascading的方式进行分区,似乎并不符合SparkSQL的期望:

2015/
??? 04
    ??? 29
    ?   ??? part-00000-00002-r-00000.gz.parquet
    ??? 30
        ??? part-00000-00001-r-00000.gz.parquet
Run Code Online (Sandbox Code Playgroud)

在层叠,我可以指定一个PartitionTap,告诉它的前三个项目将是year,monthday,我去比赛.但我无法弄清楚如何在SparkSQL中实现类似的效果.可以做以下任何一项:

  1. 只是忽略分区; 递归到镶木地板数据并读取所有找到的内容.(我知道我可以使用Hadoop的FileSystemAPI将自己的代码转换为此效果,但我真的不愿意.)
  2. 指定部分模式 - 例如"列是年(int),月(int),日(int),再加上从镶木地板推断其余部分"
  3. 指定整个架构?

(我的镶木地板数据包含嵌套结构,只要我允许它自动执行,SparkSQL可以很好地读取和交互.如果我尝试手动指定Schema,它似乎无法处理嵌套结构.)

apache-spark-sql

5
推荐指数
0
解决办法
621
查看次数

Scala中大型CSV读取超出GC开销限制

所以.我正在使用Scala,而且我相对较新(主要是一个python人).我正在通过sbt编译和运行我的代码.我在Ubuntu盒子上,目前正在运行Java 6.我有两个CSV; 我需要接受它们,处理它们,然后操纵它们.每个CSV约为250mb; 如果这有效,我可能会用更大的CSV重复这个过程.

我已经定义了一个读取CSV的函数,并将每一行写入我需要的数据结构中.我在每个CSV上串联调用此函数.问题是:它为第一个CSV完美地(并且非常快速地)返回,但第二个CSV总是抛出java.lang.OutOfMemoryError: GC overhead limit exceeded错误.

我尝试过很多东西.我的build.sbt定义javaOptions += "-Xmx20480m -XX:+HeapDumpOnOutOfMemoryError"; 我也尝试过使用-XX:-UseGCOverheadLimit,但这似乎没有任何帮助.根据我一直在阅读的Java文档,该错误表明在垃圾收集上花费了大量的系统资源 - 但我坦率地不清楚垃圾收集是什么,或者如何减少垃圾收集.我认为我的功能必须是...在某处泄漏内存,或者我必须误用Scala,但我看不出如何.

这是我的功能:

def readAndProcessData(path: String) = {
    val fileLines = Source.fromFile(path).getLines.drop(1)
    val ret = mutable.Map[String, List[Tuple2[String, String]]]()

    def addRowToRet(row: String) = {
        val rowArray = row.split(",")
        if (!(ret contains rowArray(0))) {
            ret.update(rowArray(0), List[Tuple2[String, String]]())
        }
        ret(rowArray(0)) = Tuple2(rowArray(1), rowArray(2)) :: ret(rowArray(0))
    }

    for (row <- fileLines) {
        addRowToRet(row)
    }

    ret.map{tup => (tup._1 -> tup._2.sorted)}

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

garbage-collection jvm scala sbt

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