我正在使用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?
我正在和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, …
所以.这个问题与这里讨论的问题几乎完全相同- 但是该帖子中讨论的修复(例如它)并不能解决问题.
我正在尝试使用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) 使用setuptools,我习惯于能够定义一个setup.py提供“控制台脚本”的东西——比如:
entry_points={
'console_scripts': [ 'app=app:main']
}
Run Code Online (Sandbox Code Playgroud)
如果我现在安装我的项目(python setup.py install、pip install -e .等),我可以通过调用./app. 这为我的应用程序提供了一种分发机制,现在可以pip install从 pypi/devpi 全局 - ed,无论是本地机器用于某种实用程序,还是作为某种应用程序部署的一部分在 Docker 映像中。
我现在试图了解pipenv. 文档告诉我,我应该更喜欢pipenv用于应用程序开发,并坚持使用setuptools库。这很好,但是是否有任何机制可以在pipenv“脚本”之外对我的应用程序进行“生产”安装?或者假设人们会说,pipenv install --system然后直接在应用程序入口点上调用解释器?
这里的系统是什么?
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,month和day,我去比赛.但我无法弄清楚如何在SparkSQL中实现类似的效果.可以做以下任何一项:
FileSystemAPI将自己的代码转换为此效果,但我真的不愿意.)(我的镶木地板数据包含嵌套结构,只要我允许它自动执行,SparkSQL可以很好地读取和交互.如果我尝试手动指定Schema,它似乎无法处理嵌套结构.)
所以.我正在使用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)
谢谢!