2016-04-14 16 views
1

私は、PythonでSQLコンテキスト、すなわちpysparkを使用して、csvのデータフレームをpysparkデータフレームに変換する(df操作(前処理、列名の変更、新しい列の作成、それらを同じデータフレームに追加するなど)。私は単体テストケースを作成したいと思っています。私は、データフレームに単体のテストケースを書くことは考えていません。誰かがpysparkのデータフレームにユニットテストケースを書く方法を教えてもらえますか?または、データフレーム上のテストケースのソースを私に教えてください。Pysparkデータフレーム操作のユニットテストケース

答えて

2

データフレームは、pysparkの土地にあるものと何ら変わりません。 Python section of spark-testing-baseを見て始めてください。データフレームテストを含むいくつかの興味深いプロジェクトがありますので、どのようにそれを行うかを覗いてみることができます:Sparkling Pandasは1で、もう1つはexampleです。 find-sparkもあり、あなたのスパーク実行可能コンテキストを見つけるのに役立ちます。あなたのテストを開始する前に、しかし、基本的な考え方は正しくセットアップパスにある:

def add_pyspark_path(): 
    """ 
    Add PySpark to the PYTHONPATH 
    Thanks go to this project: https://github.com/holdenk/sparklingpandas 
    """ 
    import sys 
    import os 
    try: 
     sys.path.append(os.path.join(os.environ['SPARK_HOME'], "python")) 
     sys.path.append(os.path.join(os.environ['SPARK_HOME'], 
      "python","lib","py4j-0.9-src.zip")) 
    except KeyError: 
     print "SPARK_HOME not set" 
     sys.exit(1) 

add_pyspark_path() # Now we can import pyspark 

、通常、あなたは一つの基地テストケースクラスを持っているでしょう:

import logging 

from pyspark import SparkContext 
from pyspark import SparkConf 
from pyspark.sql import SQLContext, HiveContext 

def quiet_py4j(): 
    """ turn down spark logging for the test context """ 
    logger = logging.getLogger('py4j') 
    logger.setLevel(logging.WARN) 

class SparkTestCase(unittest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     quiet_py4j() 

     # Setup a new spark context for each test 
     conf = SparkConf() 
     conf.set("spark.executor.memory","1g") 
     conf.set("spark.cores.max", "1") 
     #conf.set("spark.master", "spark://192.168.1.2:7077") 
     conf.set("spark.app.name", "nosetest") 
     cls.sc = SparkContext(conf=conf) 
     cls.sqlContext = HiveContext(cls.sc) 

    @classmethod 
    def tearDownClass(cls): 
     cls.sc.stop() 
関連する問題