Я полагаю, вы также можете добавить это как переменную в свой файл spark-defaults.conf. Итак, что-то вроде:
spark.jars.packages com.databricks:spark-csv_2.10:1.3.0
Это будет загружать библиотеку spark-csv в PySpark каждый раз при запуске драйвера.
Очевидно, что ответ нуля более гибкий, потому что вы можете добавить эти строки в свое приложение PySpark перед импортом пакета PySpark:
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell'
from pyspark import SparkContext, SparkConf
Таким образом вы импортируете только те пакеты, которые вы на самом деле нужен для вашего скрипта.
Вы можете установить this
с таким способом .bind
и вызвать twitter.get
в componentDidMount
, как в этом example
componentDidMount: function() {
twitter.get('statuses/user_timeline', function(error, data) {
this.setState({tweets: data})
}.bind(this)); // set this that refers to you React component
}
Никогда не выполняйте ajax-вызов в компонентеWillMount.
Сделайте это в компонентеDidMount.
Также есть проблема с областью, для чего используйте предложение Alexander (bind). Другая возможность:
componentDidMount: function() {
var self = this;
twitter.get('statuses/user_timeline', function(error, data) {
self.setState({tweets: data})
});
}
Также более подробно здесь http://facebook.github.io/react/tips/initial-ajax.html (уже подчеркнуто климо в комментарии)
Есть два способа, поместив его внутри componentDidMount, вы можете решить проблему:
1. Привяжите эту область к функции
.bind (this)
twitter.get('statuses/user_timeline', function(error, data) {
this.setState({tweets: data})
}).bind(this);
2. Используйте стрелку жира
=>
twitter.get('statuses/user_timeline', (error, data) => {
this.setState({tweets: data})
});