pysparkでcol関数が見つからない
質問
pyspark 1.6.2において、インポートできるのは
col
という関数で
from pyspark.sql.functions import col
で調べようとしても
Githubのソースコード
で調べてみると
col
の中に
functions.py
ファイル内に存在しない関数を python がインポートすることはできますか?
どのように解決するには?
存在します。ただ、明示的に定義されていないだけです。からエクスポートされる関数は
pyspark.sql.functions
からエクスポートされる関数は、JVMコードの周りの薄いラッパーで、特別な扱いを必要とするいくつかの例外を除いて、ヘルパーメソッドを使用して自動的に生成されます。
ソースを注意深くチェックすると
を注意深くチェックすると
col
が他の
_functions
. この辞書は
をさらに繰り返し
であり
_create_function
はラッパーを生成するために使われます。生成された各関数は、直接
globals
.
最後に
__all__
は、モジュールからエクスポートされるアイテムのリストを定義していますが、単にすべての
globals
をすべてエクスポートします。
このメカニズムがまだ明確でない場合は、おもちゃのような例を作成することができます。
-
というPythonモジュールを作成します。
foo.py
というPythonモジュールを以下の内容で作成します。# Creates a function assigned to the name foo globals()["foo"] = lambda x: "foo {0}".format(x) # Exports all entries from globals which start with foo __all__ = [x for x in globals() if x.startswith("foo")]
-
Pythonのパスのどこか(例えば作業ディレクトリ内)に配置します。
-
インポート
foo
:from foo import foo foo(1)
このようなメタプログラミングのアプローチの望ましくない副作用は、定義された関数が純粋に静的コード解析に依存するツールによって認識されない可能性があることです。これは重要な問題ではなく、開発プロセス中に安全に無視することができます。
インストールされている IDE に応じて タイプアノテーション をインストールすることで問題を解決できるかもしれません (たとえば ゼロ323/pyspark-stubs#172 ).
関連
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] 億の相対的輸入
-
[解決済み] 他のPythonファイルをインポートするには?
-
[解決済み] 前月の日時オブジェクトを返す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] Django filter queryset __in for *every* item in list