pysparkのアプリケーションでロギングステートメントを含むクロージャー機能が含まれているため、pysparkのローカル/ hdfsファイルにメッセージを記録する方法がわかりません。 私は以下のように何かをしようとしたが動作しません:pysparkアプリケーションからローカルまたはhdfsファイルへのログ
import json
from pyspark import SparkContext
import logging
def parse_json(text_line):
try:
return(json.loads(text_line))
except ValueError:
# here I need to log a warning message to a local file or even to default spark logs
logger.warn("invalid json structure" + text_line)
return({})
if __name__ == "__main__":
my_data = ['{"id": "111", "name": "aaa"}',
'{"wrong json", "name": "bbb"}',
'{"id": "333", "name": "ccc"}']
sc = SparkContext()
logger = logging.getLogger('py4j')
lines = sc.parallelize(my_data)
my_data_json = lines.map(parse_json).filter(lambda x: x)
print(my_data_json.collect())
任意の助けてください!
「動作しません」と定義できますか?エラーが発生するか、「何も起こりませんか? – Creos
エラーは表示されませんが、ドライバまたはエグゼキュータのログファイルにログメッセージが見つかりません。 –