有没有办法在git仓库中浏览和显示文件而不先克隆它?我可以使用命令在svn中执行这些操作:
svn ls /path/to/repo svn cat /path/to/repo/file-in-repo
我可以使用git show但是做:
git show /path/to/repo git show HEAD:/path/to/repo
结果
fatal: Not a git repository
我有一个数据帧df有VectorUDT指定的列features.如何获取列的元素,比如第一个元素?
我尝试过以下操作
from pyspark.sql.functions import udf
first_elem_udf = udf(lambda row: row.values[0])
df.select(first_elem_udf(df.features)).show()
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict(for numpy.dtype)错误.如果我first_elem_udf = first_elem_udf(lambda row: row.toArray()[0])改为相同的错误.
我也试过,explode()但我得到一个错误,因为它需要一个数组或地图类型.
我认为这应该是一种常见的操作.
dataframe apache-spark apache-spark-sql pyspark apache-spark-ml
根据http://docs.sqlalchemy.org/en/rel_0_9/core/pooling.html#disconnect-handling-pessimistic,如果连接池中的条目不再有效,可以检测SQLAlchemy重新连接.我创建了以下测试用例来测试它:
import subprocess
from sqlalchemy import create_engine, event
from sqlalchemy import exc
from sqlalchemy.pool import Pool
@event.listens_for(Pool, "checkout")
def ping_connection(dbapi_connection, connection_record, connection_proxy):
cursor = dbapi_connection.cursor()
try:
print "pinging server"
cursor.execute("SELECT 1")
except:
print "raising disconnect error"
raise exc.DisconnectionError()
cursor.close()
engine = create_engine('postgresql://postgres@localhost/test')
connection = engine.connect()
subprocess.check_call(['psql', str(engine.url), '-c',
"select pg_terminate_backend(pid) from pg_stat_activity " +
"where pid <> pg_backend_pid() " +
"and datname='%s';" % engine.url.database],
stdout=subprocess.PIPE)
result = connection.execute("select 'OK'")
for row in result:
print "Success!", " ".join(row)
Run Code Online (Sandbox Code Playgroud)
但是没有恢复,我收到了这个例外: …
有没有办法读取通过gz压缩到dask数据帧的.csv文件?
我直接尝试过
import dask.dataframe as dd
df = dd.read_csv("Data.gz" )
Run Code Online (Sandbox Code Playgroud)
但得到一个unicode错误(可能是因为它正在解释压缩的字节)有一个"compression"参数但compression = "gz"不起作用,到目前为止我找不到任何文档.
使用pandas我可以直接读取文件而不会产生问题,除了结果炸毁了我的记忆;-)但是如果我限制行数它可以正常工作.
import pandas.Dataframe as pd
df = pd.read_csv("Data.gz", ncols=100)
Run Code Online (Sandbox Code Playgroud) 当我将Spark DataFrame保存为实木复合地板文件然后将其读回时,所得DataFrame的行与原始行不同,如下面的会话所示。这是DataFrames还是Parquet文件的“功能”?以行顺序保留方式保存DataFrame的最佳方法是什么?
>>> import numpy as np
>>> import pandas as pd
>>> pdf = pd.DataFrame(np.random.random((10,2)))
>>> pdf
0 1
0 0.191519 0.622109
1 0.437728 0.785359
2 0.779976 0.272593
3 0.276464 0.801872
4 0.958139 0.875933
5 0.357817 0.500995
6 0.683463 0.712702
7 0.370251 0.561196
8 0.503083 0.013768
9 0.772827 0.882641
>>> df = sqlContext.createDataFrame(pdf)
>>> df.show()
+-------------------+--------------------+
| 0| 1|
+-------------------+--------------------+
| 0.1915194503788923| 0.6221087710398319|
| 0.4377277390071145| 0.7853585837137692|
| 0.7799758081188035| 0.2725926052826416|
| 0.2764642551430967| 0.8018721775350193|
| 0.9581393536837052| 0.8759326347420947|
|0.35781726995786667| 0.5009951255234587|
| 0.6834629351721363| …Run Code Online (Sandbox Code Playgroud) 我在 PySpark 中的 Vectors 列上使用 UDF 时遇到问题,可以在此处说明:
from pyspark import SparkContext
from pyspark.sql import Row
from pyspark.sql.types import DoubleType
from pyspark.sql.functions import udf
from pyspark.mllib.linalg import Vectors
FeatureRow = Row('id', 'features')
data = sc.parallelize([(0, Vectors.dense([9.7, 1.0, -3.2])),
(1, Vectors.dense([2.25, -11.1, 123.2])),
(2, Vectors.dense([-7.2, 1.0, -3.2]))])
df = data.map(lambda r: FeatureRow(*r)).toDF()
vector_udf = udf(lambda vector: sum(vector), DoubleType())
df.withColumn('feature_sums', vector_udf(df.features)).first()
Run Code Online (Sandbox Code Playgroud)
这失败并显示以下堆栈跟踪:
Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 5 in stage 31.0 failed …Run Code Online (Sandbox Code Playgroud) 我想删除首字母缩略词中的点,但不删除python字符串中的域名.例如,我想要字符串
'a.b.c. test@test.com http://www.test.com'
Run Code Online (Sandbox Code Playgroud)
成为
'abc test@test.com http://www.test.com'
Run Code Online (Sandbox Code Playgroud)
我到目前为止最接近的正则表达式是
re.sub('(?:\s|\A).{1}\.',lambda s: s.group()[0:2], s)
Run Code Online (Sandbox Code Playgroud)
结果是
'ab.c. test@test.com http://www.test.com'
Run Code Online (Sandbox Code Playgroud)
似乎上面的正则表达式工作,我需要将正则表达式更改为
(?:\s|\A|\G).{1}\.
Run Code Online (Sandbox Code Playgroud)
但是在python中没有匹配标记的结束(\ G).
编辑:正如我在评论中提到的,字符串没有特定的格式.这些字符串包含非正式的人工对话,因此可能包含零个,一个或多个首字母缩略词或域名.如果它能使我免于编写"真正的"解析器,那么我可以使用一些错误.
u在Python中将unicode字符串转换为(byte)字符串的正确方法是调用u.encode(someencoding).
不幸的是,我之前并不知道我曾经用过str(u)转换.特别是,我打电话str(u)强制u成为一个字符串,这样我就可以使它成为一个有效的搁置键(必须是str).
由于我没有遇到任何问题UnicodeEncodeError,我想知道这个过程是否可逆/无损.也就是说,我可以u = str(converted_unicode)(或u = bytes(converted_unicode)在Python 3中)获取原始内容u吗?