小编use*_*011的帖子

NLTK 被调用并收到错误“punkt”在 databricks pyspark 上未找到

我想调用 NLTK 通过 pyspark 在 databricks 上做一些 NLP。我已经从 databricks 的库选项卡安装了 NLTK。它应该可以从所有节点访问。

我的 py3 代码:

 import pyspark.sql.functions as F
 from pyspark.sql.types import StringType
 import nltk
 nltk.download('punkt')
 

 def get_keywords1(col):
     sentences = []
     sentence = nltk.sent_tokenize(col)
      

 get_keywords_udf = F.udf(get_keywords1, StringType())
Run Code Online (Sandbox Code Playgroud)

我运行上面的代码并得到:

 [nltk_data] Downloading package punkt to /root/nltk_data...
 [nltk_data]   Package punkt is already up-to-date!
Run Code Online (Sandbox Code Playgroud)

当我运行以下代码时:

 t = spark.createDataFrame(
 [(2010, 1, 'rdc', 'a book'), (2010, 1, 'rdc','a car'),
  (2007, 6, 'utw', 'a house'), (2007, 6, 'utw','a hotel')
 ], 
 ("year", "month", "u_id", "objects"))
 
 t1 = t.withColumn('keywords', …
Run Code Online (Sandbox Code Playgroud)

nlp nltk python-3.x pyspark

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

即使公钥已创建并保存在我的 github 配置文件中,远程 github 访问仍被拒绝

我在github上问了同样的问题,但没有回复。所以,我认为这里可能是提出此类编码问题的更好地方,因为这是我尝试做一些编码工作时遇到的问题。

我想在运行 macOS 10.14.x 的 MacBook Pro 上使用 docker 设置气流。

我有 zpencerq/docker-airflow:1.10.2 并按照https://docs.docker.com/compose/install/#install-compose上的说明进行操作

另外,我已经按照https://github.com/uber-common/docker-ssh-agent-forward中的说明设置了 ssh 代理转发

当我跑步时:

 docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

我有:

Collecting my-data-store from git+ssh://git@github.com/my-data-store.git@v.xx.xx.x#egg=my-data-store

Cloning ssh://git@github.com/my-data-store.git to /my/local/path

Permission denied (publickey).

fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

我已经创建了 ssh 公钥并将 ssh 公钥添加到我的 git 配置文件中。我还添加了我的私钥。

我已经尝试过针对此类问题的一些答案,但没有一个有效。

如果我在 Mac 终端中运行以下命令,效果很好。

git clone -q ssh://git@github.com/my_path/my-data-store.git /tmp/my_folder
Run Code Online (Sandbox Code Playgroud)

为什么 docker-compose 不能做同样的事情来访问 github ?

我错过了什么吗?

ssh github docker docker-compose airflow

5
推荐指数
2
解决办法
9093
查看次数

在数据块上安装新版本后,pandas 版本未更新

当我在数据块上运行 python3.7 代码时,我试图解决熊猫的问题。

错误是:

 ImportError: cannot import name 'roperator' from 'pandas.core.ops' (/databricks/python/lib/python3.7/site-packages/pandas/core/ops.py)
Run Code Online (Sandbox Code Playgroud)

熊猫版本:

pd.__version__
0.24.2
Run Code Online (Sandbox Code Playgroud)

我跑

 from pandas.core.ops import roperator
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上

pandas 0.25.1
Run Code Online (Sandbox Code Playgroud)

所以,我尝试在数据块上升级熊猫。

%sh pip uninstall -y pandas
Successfully uninstalled pandas-1.1.2

%sh pip install pandas==0.25.1
 Collecting pandas==0.25.1
 Downloading pandas-0.25.1-cp37-cp37m-manylinux1_x86_64.whl (10.4 MB)
 Requirement already satisfied: python-dateutil>=2.6.1 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from pandas==0.25.1) (2.8.0)
 Requirement already satisfied: numpy>=1.13.3 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from pandas==0.25.1) (1.16.2)
 Requirement already satisfied: pytz>=2017.2 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from pandas==0.25.1) (2018.9)
 Requirement already satisfied: six>=1.5 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from python-dateutil>=2.6.1->pandas==0.25.1) (1.12.0)
 Installing collected …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas databricks

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

如何将 pandas 数据框转换为带有列名的 numpy 数组

  • 这必须使用向量化方法,无需迭代

我想从 pandas 数据帧创建一个 numpy 数组。

我的代码:

import pandas as pd
_df = pd.DataFrame({'itme': ['book', 'book' , 'car', ' car', 'bike', 'bike'], 'color': ['green', 'blue' , 'red', 'green' , 'blue', 'red'], 'val' : [-22.7, -109.6, -57.19, -11.2, -25.6, -33.61]})
 
item     color    val
book    green   -22.70
book    blue    -109.60
car     red     -57.19
car     green   -11.20
bike    blue    -25.60
bike    red     -33.61
Run Code Online (Sandbox Code Playgroud)

大约有 12,000 万行。

我需要创建一个 numpy 数组,例如:

item    green    blue     red
book    -22.70  -109.60   null
car     -11.20   null     -57.19
bike    null …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas pytorch

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

torch 无法在 GPU 上分配小尺寸张量(< 1GB),但可以在 databricks 上为同一节点上具有 400+ GB 内存的 CPU 分配

我的问题与我的上一个问题相关,pytorch 在 cpu 和 gpu 上为小尺寸张量分配内存,但在超过 400 GB 的节点上出现错误。但是,它是不同的,所以我创建了一个新线程。

在这个问题中,我改变了输入张量大小的大小。

 import torch
 from torch import nn
 import numpy as np
 num_embedding, num_dim = 14000, 300
 embedding = nn.Embedding(num_embedding, num_dim)

 row, col = 8000, 302
 t = [[x for x in range(col)] for _ in range(row)] 
 
 t1 = torch.tensor(t)
 print(t1.shape)  # torch.Size([8000, 302])

 type(t1), t1.device, (t1.nelement() * t1.element_size())/(1024**3) # (torch.Tensor, device(type='cpu'), 0.01800060272216797)

 tt = embedding(t1)
 embedding.forward(t1)

 t2 = t1.cuda()
 t2.device, t2.shape, t2.grad, t2.nelement(), t2.element_size(), (t2.nelement() * t2.element_size())/(1024**3) # (device(type='cuda', …
Run Code Online (Sandbox Code Playgroud)

gpu torch pytorch tensor

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

通过 pyspark 在 databricks 上的数据库中查找具有特定列名称的表

我想通过 pyspark sql 在 databricks 上的数据库中查找具有特定列的表。

我使用以下代码,但它不起作用。 https://medium.com/@rajnishkumargarg/find-all-the-tables-by-column-name-in-hive-51caebb94832

在 SQL 服务器上我的代码:

   SELECT Table_Name, Column_Name 
   FROM INFORMATION_SCHEMA.COLUMNS
   WHERE TABLE_CATALOG = 'YOUR_DATABASE'
   AND COLUMN_NAME LIKE '%YOUR_COLUMN%'
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何在 pyspark sql 上做同样的事情?

谢谢

sql database hive apache-spark pyspark

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

在sklearn中进行测试和训练数据的错误

我试图通过"train_test_split"进行测试并训练数据.为什么我收到错误"至少需要一个数组作为输入".

"train_test_split"的输入可以是数组和dataFrame,对吗?

import pandas as pd
import numpy as np 
from rpy2.robjects.packages import importr
import rpy2.robjects as ro
import pandas.rpy.common as rpy_common 
from sklearn.model_selection import  train_test_split

def la():
 ro.r('library(MASS)')
 pydf = rpy_common.load_data(name = 'Boston', package=None, convert=True)
 pddf = pd.DataFrame(pydf)
 targetIndex = pddf.columns.get_loc("medv") 

 # make train and test data
rowNum = pddf.shape[0]  
colNum = pddf.shape[1]
print(type(pddf.as_matrix()))
print(pddf.as_matrix().shape)
m = np.asarray(pddf.as_matrix()).reshape(rowNum,colNum)
print(type(m))
x_train, x_test, y_train, y_test = train_test_split(x = m[:, 0:rowNum-2], \
                                                    y = m[:, -1],\
                                                    test_size = 0.5) 
# error:     raise …
Run Code Online (Sandbox Code Playgroud)

numpy python-3.x scikit-learn

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

如何从 pyspark sql 上的大表中选择除其中 2 之外的所有列?

在连接两个表时,我想从一个大表中选择除其中 2 列之外的所有列,该大表在 databricks 上的 pyspark sql 上有许多列。

我的 pyspark sql:

 %sql
 set hive.support.quoted.identifiers=none;
 select a.*, '?!(b.year|b.month)$).+'
 from MY_TABLE_A as a
 left join 
      MY_TABLE_B as b
 on a.year = b.year and a.month = b.month 
Run Code Online (Sandbox Code Playgroud)

我按照 配置单元:选择所有列排除两个 配置单元如何选择除一列之外的所有列?

但是,它对我不起作用。所有列都在结果中。我想删除重复的列(结果中的年份和月份)。

谢谢

python sql hive apache-spark pyspark

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