dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка -- python поле с участием apache-spark поле с участием apache-spark-sql поле с участием pyspark пол Связанный проблема

dataframe or sqlctx (sqlcontext) generated “Trying to call a package” error


1
vote

проблема

русский

Я использую Spark 1.3.1. В Pyspark я создал Dataframe от RDD и зарегистрировал схему, что-то вроде этого:

 <код> dataLen=sqlCtx.createDataFrame(myrdd, ["id", "size"]) dataLen.registerTempTable("tbl")   

На данный момент все в порядке, я могу сделать запрос «Выбрать» из «TBL», например «Выбрать размер из TBL, где id = 'abc'».

Тогда в функции Python я определяю что-то вроде:

 <код> def  getsize(id):     total=sqlCtx.sql("select size from tbl where id='" + id + "'")     return total.take(1)[0].size   

На данный момент все еще нет проблем, я могу сделать <код> getsize("ab") , и он возвращает значение.

Проблема произошла, когда я вызывал <код> getsize в пределах RDD, скажем, у меня есть RDD с именем данных, который имеет (ключ, значение) списка, когда я делаю

 <код> data.map(lambda x: (x[0], getsize("ab"))   

Это сгенерировало ошибку, которая является

py4j.protocol.py4jerror: попытка вызвать пакет

Любая идея?

Английский оригинал

I am using spark 1.3.1. In PySpark, I have created a DataFrame from a RDD and registered the schema, something like this :

dataLen=sqlCtx.createDataFrame(myrdd, ["id", "size"]) dataLen.registerTempTable("tbl") 

at this point everything is fine I can make a "select" query from "tbl", for example "select size from tbl where id='abc'".

Then in a Python function, I define something like :

def  getsize(id):     total=sqlCtx.sql("select size from tbl where id='" + id + "'")     return total.take(1)[0].size 

at this point still no problem, I can do getsize("ab") and it does return a value.

The problem occurred when I invoked getsize within a rdd, say I have a rdd named data which is of (key, value) list, when I do

data.map(lambda x: (x[0], getsize("ab")) 

this generated an error which is

py4j.protocol.Py4JError: Trying to call a package

Any idea?

</div
           
     
     

Список ответов

0
 
vote

Spark не поддерживает вложенные действия или преобразования и <код> SQLContext не доступен за пределами драйвера. Так что вы делаете здесь просто не можете работать. Здесь не совсем понятно, что вы хотите здесь, но, скорее всего, простой <код> join , либо на <код> RDDs или DataFrames

должен сделать трюк.
 

Spark doesn't support nested actions or transformations and SQLContext is not accessible outside the driver. So what you're doing here simply cannot work. It is not exactly clear what you want here but most likely a simple join, either on RDDs or DataFrames should do the trick.

</div
 
 

Связанный проблема

1  Python: Tkinter не отображает мой образ или интерфейс  ( Python tkinter not displaying my image or ui ) 
Я пытаюсь создать пользовательский интерфейс с изображением в правом верхнем углу. Вот мой код: <код> import tkinter as tk import urllib.request import base...

0  Групповые пакеты на сервере трафика  ( Timing packets on a traffic server ) 
У меня есть прокси-сервер трафика, который является дополнительным ходом на сеть и обрабатывает большое количество трафика. Я хотел бы рассчитать стоимость ...

2  Pyproj Пакет Установка Proj_dir Переменная  ( Pyproj package installation proj dir variable ) 
Я пытаюсь установить <код> pyproj , хотя получаю <код> Proj executable not found. Please set PROJ_DIR variable ошибки. Команда <Код> $ pipenv install pyp...

0  Использование Pybind11 на MacBook Pro  ( Using pybind11 on macbook pro ) 
Я пытаюсь использовать Pybind11 на MacBook, и я пытаюсь сделать так, как было написано в https://pybind11.readtheDocs.io/en/stable/basics.html я установил C...

48  Ошибка auth_user с django 1.8 и syncdb / migrate  ( Auth user error with django 1 8 and syncdb migrate ) 
При обновлении в Django 1.8 (с zc.buildout) и запуском SyncDB или миграция, я получаю это сообщение: <Код> django.db.utils.ProgrammingError: relation "auth_...

12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7  ( Edit with idle python gui context menu on windowsnbsp7 ) 
Под Windows XP у меня есть контекстное введение меню «Редактировать с простым» для python исходные файлы. Я пытался сделать эту работу под Windows 7 (32-бит...

3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi  ( Compile failed with error code 1 in tmp pip build root uwsgi ) 
Я пытаюсь следить за руководством в http: // uwsgi -docs.readtheDocks.org/en/latest/tutorials/django_and_nginx.html . Я получил все, что все работает TOHTTP:...

0  Почему мой скрипт Cron работает только один раз?  ( Why my cron script running just once ) 
Я пытаюсь запустить простой сценарий Python, используя команды cron. Я написал код, чтобы запускать свой скрипт Python в каждом 1 минуте и записывать вывод в ...

1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле  ( Use a file as an argument for a function that counts creates a count for each le ) 
Моя программа прямо сейчас работает только для первого символа в текстовом файле и итерации бесконечно. Например, если первая буква в текстовом файле D, прогр...

0  Jupyter-Notebook не работает после команды Jupyter-Notebook  ( Jupyter notebook is not working after jupyter notebook command ) 
Я устанавливаю Jupyter-ноутбук для работы с проектами, связанными с наукой на науке. Я не могу установить его должным образом или есть некоторая проблема с со...

3  Как заменить символ в строке с символом не ASCII в Python?  ( How to replace a character in a string with a non ascii character in python ) 
Я хочу заменить знак номера (#) символом, аналогичным тому, что называется резким знаком музыки (♯). Я попробовал следующую линию, но не работал. <код> res[...

15  Пип не работает  ( Pip not working ) 
Я пытаюсь установить Python-Shavely с Pip в Ubuntu 10.04. Я получил «неизвестную или неподдерживаемую команду» «Установить», пока я попробовал, <Код> Allian...

0  Ubuntu Supervisor Импорт модулей Python модулей  ( Ubuntu supervisor import python modules error ) 
Я использую супервизор для запуска Websocket Django в системе запуска. Когда я запускаю руководитель, он будет поднять ModulenotfoundError: Нет модуля с ...

0  Как добавить номер в каждом базовом случае рекурсии? (Python3)?  ( How to add number in each base case of recursionpython3 ) 
Я хочу добавить 1 на <код> ans После того, как рекурсионная ветка достигает того, где <код> n==0 но не удается. Я пытался присвоить <код> ans сначала и д...

2  Spotipy Authentication не возвращает токен?  ( Spotipy authentication not returning token ) 
Все подходящие люди, я прочитал всю документацию, которую я могу найти в методах аутентификации Spotipy, и я собрал небольшой кусок кода, чтобы проверить его,...