我搜索了很多地方,但我得到的是如何安装它,而不是如何验证它是否已安装.我可以验证我的NVIDIA驱动程序已安装,并且已安装CUDA,但我不知道如何验证是否已安装CuDNN.非常感谢帮助,谢谢!
PS.
这是为了实现caffe.目前一切正常,没有启用CuDNN.
Spark现在提供可在数据帧中使用的预定义函数,并且它们似乎已经过高度优化.我最初的问题是更快,但我自己做了一些测试,发现至少在一个实例中,spark函数的速度提高了大约10倍.有谁知道为什么会这样,什么时候udf会更快(仅适用于存在相同spark函数的情况)?
这是我的测试代码(在Databricks社区上运行):
# UDF vs Spark function
from faker import Factory
from pyspark.sql.functions import lit, concat
fake = Factory.create()
fake.seed(4321)
# Each entry consists of last_name, first_name, ssn, job, and age (at least 1)
from pyspark.sql import Row
def fake_entry():
name = fake.name().split()
return (name[1], name[0], fake.ssn(), fake.job(), abs(2016 - fake.date_time().year) + 1)
# Create a helper function to call a function repeatedly
def repeat(times, func, *args, **kwargs):
for _ in xrange(times):
yield func(*args, **kwargs)
data = list(repeat(500000, fake_entry))
print …Run Code Online (Sandbox Code Playgroud) performance user-defined-functions apache-spark apache-spark-sql pyspark
我已经解决了这个问题一个星期了,而且它变得非常令人沮丧,因为每次我实现一个更简单但相似的我需要做的比例示例时,事实证明多处理会捏造它.它处理共享内存的方式令我困惑,因为它非常有限,它可能会很快变得无用.
所以我的问题的基本描述是我需要创建一个进程,该进程在一些参数中传递以打开图像并创建大小为60x40的大约20K补丁.这些补丁一次保存到列表2中,需要返回到主线程,然后由GPU上运行的其他2个并发进程再次处理.
过程和工作流程以及所有大部分都需要处理的事情,我现在需要的是最容易被认为是最困难的部分.我无法保存并将带有20K补丁的列表返回到主线程.
第一个问题是因为我将这些补丁保存为PIL图像.然后我发现添加到Queue对象的所有数据都必须被pickle.第二个问题是我然后将补丁转换为每个60x40的数组并将它们保存到列表中.而现在仍然不起作用?显然,当您调用queue_obj.get()程序挂起时,队列可以保存有限数量的数据.
我尝试过很多其他的东西,而且我尝试的每一件新东西都不起作用,所以我想知道是否有人有一个库的其他建议我可以使用它来共享对象而没有所有模糊的东西?
这是我正在看的一种示例实现.请记住,这完全正常,但完全实现不会.我确实有代码打印信息性消息,以确保保存的数据具有完全相同的形状和一切,但由于某种原因它不起作用.在完整实现中,独立进程成功完成,但在q.get()处冻结.
from PIL import Image
from multiprocessing import Queue, Process
import StringIO
import numpy
img = Image.open("/path/to/image.jpg")
q = Queue()
q2 = Queue()
#
#
# MAX Individual Queue limit for 60x40 images in BW is 31,466.
# Multiple individual Queues can be filled to the max limit of 31,466.
# A single Queue can only take up to 31,466, even if split up in different puts.
def rz(patch, qn1, qn2):
totalPatchCount = 20000
channels …Run Code Online (Sandbox Code Playgroud) python multithreading shared-memory multiprocessing python-multiprocessing
我们在python脚本上运行spark-submit命令,该脚本使用Spark在Python中使用Caffe并行化对象检测.如果在仅使用Python的脚本中运行,脚本本身运行完全正常,但在将其与Spark代码一起使用时会返回导入错误.我知道火花代码不是问题,因为它在我的家用机器上运行得非常好,但它在AWS上运行不正常.我不确定这是否与环境变量有关,就好像它没有检测到它们一样.
设置这些环境变量:
SPARK_HOME=/opt/spark/spark-2.0.0-bin-hadoop2.7
PATH=$SPARK_HOME/bin:$PATH
PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
PYTHONPATH=/opt/caffe/python:${PYTHONPATH}
Run Code Online (Sandbox Code Playgroud)
错误:
16/10/03 01:36:21 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, 172.31.50.167): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 161, in main
func, profiler, deserializer, serializer = read_command(pickleSer, infile)
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 54, in read_command
command = serializer._read_with_length(file)
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 164, in _read_with_length
return self.loads(obj)
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 422, in loads
return pickle.loads(obj)
File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/cloudpickle.py", line 664, in subimport
__import__(name)
ImportError: ('No module named caffe', <function subimport at 0x7efc34a68b90>, …Run Code Online (Sandbox Code Playgroud) 案例:S3 存储桶中有一个很大的 zip 文件,其中包含大量图像。有没有办法不下载整个文件来读取元数据或知道 zip 文件中有多少文件?
当文件是本地文件时,在 python 中,我可以将它作为 zipfile() 打开,然后调用 namelist() 方法,该方法返回内部所有文件的列表,我可以计算它。但是,当文件驻留在 S3 中而无需下载时,不确定如何执行此操作。此外,如果 Lambda 可以做到这一点,那将是最好的。
我已经看到了这个问题的变体,但不是在这个确切的上下文中。我有一个名为 100-Test.zip 的文件,其中包含 100 张 .jpg 图像。我想在内存中打开这个文件并处理每个执行 PIL 操作的文件。剩下的代码已经写好了,我只想专注于从 zip 文件到第一个 PIL 图像。这就是我从阅读其他问题中收集到的建议中的代码现在的样子,但它不起作用。大家可以帮忙看看吗?
import zipfile
from StringIO import StringIO
from PIL import Image
imgzip = open('100-Test.zip', 'rb')
z = zipfile.ZipFile(imgzip)
data = z.read(z.namelist()[0])
dataEnc = StringIO(data)
img = Image.open(dataEnc)
print img
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时出现此错误:
IOError: cannot identify image file <StringIO.StringIO instance at
0x7f606ecffab8>
Run Code Online (Sandbox Code Playgroud)
替代方案:我看到其他消息来源说要使用它:
image_file = StringIO(open("test.jpg",'rb').read())
im = Image.open(image_file)
Run Code Online (Sandbox Code Playgroud)
但问题是我没有打开文件,它已经在内存中的 data 变量中。我也尝试使用dataEnc = StringIO.read(data)但出现此错误:
TypeError: unbound method read() must be called with StringIO instance as
first argument (got str …Run Code Online (Sandbox Code Playgroud) 目的
将 zip 存档拆分为较小的 zip 存档,每个新 zip 均匀分布文件数。
例子
源 zip(100 个文件)
目标 zip(每个 25 个文件):
描述
因此,我能够打开 zip 文件并迭代内容以将它们拆分,但我无法写入该文件。因为我没有对 zip 内容做任何事情,所以我认为我不需要做任何 StringIO 的东西或任何东西?
代码
zipFileNameSrc = '100-Test.zip'
zipFile = open(zipFileNameSrc)
unzippedFile = zipfile.ZipFile(zipFile)
imgList = [(s, unzippedFile.read(s)) for s in unzippedFile.namelist() if (".jpg" or ".JPG") in s]
#image names: imgList[i][0] and images: imgList[i][1]
#...
#...additional logic to split into sets of 25 images
#...fileTuplesList = imgList[:25]
zipNo = 1
#zipFileDest = destination + "/" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Python 编写一个 Spark 作业,该作业将打开与 Impala 的 jdbc 连接,并将 VIEW 直接从 Impala 加载到 Dataframe 中。这个问题非常接近,但在 Scala 中:Calling JDBC to impala/hive from inside a spark job and created a table
我该怎么做呢?对于其他数据源,例如 MySQL、PostgreSQL 等,有很多示例,但我还没有看到 Impala + Python + Kerberos 的示例。一个例子会有很大帮助。谢谢!
用网络上的信息试过这个,但没有用。
#!/bin/bash
export PYSPARK_PYTHON=/home/anave/anaconda2/bin/python
export HADOOP_CONF_DIR=/etc/hive/conf
export PYSPARK_DRIVER_PYTHON=/home/anave/anaconda2/bin/ipython
export PYSPARK_DRIVER_PYTHON_OPTS='notebook --ip=* --no-browser'
# use Java8
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
# JDBC Drivers for Impala
export CLASSPATH=/home/anave/impala_jdbc_2.5.30.1049/Cloudera_ImpalaJDBC41_2.5.30/*.jar:$CLASSPATH
export JDBC_PATH=/home/anave/impala_jdbc_2.5.30.1049/Cloudera_ImpalaJDBC41_2.5.30
# --jars $SRCDIR/spark-csv-assembly-1.4.0-SNAPSHOT.jar \
# --conf spark.sql.parquet.binaryAsString=true \
# --conf spark.sql.hive.convertMetastoreParquet=false
pyspark …Run Code Online (Sandbox Code Playgroud) 在PIL中,根据我所见,最大的质量调整似乎是:
img = img.resize((n1, n2), Image.ANTIALIAS)
Run Code Online (Sandbox Code Playgroud)
对于openCV,这似乎是这样做的方法:
small = cv2.resize(image, (0,0), fx=0.5, fy=0.5)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,是否需要一个附加参数,或者这会以最小的质量损失来减小尺寸?
python opencv image-resizing python-imaging-library python-2.7