2016-10-20 16 views
8

にCOL機能を見つけることができません、私はがpyspark 1.6.2ではpyspark

from pyspark.sql.functions import col 

col機能をインポートすることができますが、私はGithub source codeでそれを検索しようとすると、私はfunctions.pyファイルに何col機能を見つけていない、どのようにすることができますPythonは存在しない関数をインポートしますか?

答えて

13

あります。それは明示的に定義されていません。 pyspark.sql.functionsからエクスポートされた関数は、JVMコードの周りの薄いラッパーであり、特別な処理が必要な例外はいくつかありますが、ヘルパーメソッドを使用して自動的に生成されます。

慎重にソースyou'll find col listed among other _functionsを確認する場合は、この辞書はfurther iteratedで、_create_functionはラッパーの生成に使用されます。生成された各関数は、globalsの対応する名前に直接割り当てられます。

最後に__all__は、モジュールからエクスポートされたアイテムのリストを定義し、ブラックリストに含まれているものを除いてすべてglobalsをエクスポートします。

このメカニズムは、まだあなたがおもちゃの例を作成することができます明確でない場合は、次の

  • は、次の内容のfoo.pyと呼ばれるPythonモジュールを作成します: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")] 
    
  • 置き、それを(たとえば、作業ディレクトリ内の)。

  • インポートfooは:

    from foo import foo 
    
    foo(1) 
    
+0

@Bhaskar '平均(Y)1次回()[0]'(具体的には '1次回は()[0]')いずれかを行わないのでセンス。ここに記載されている問題とは関係ありません。 – user6910411