我们需要获取将群集中的大型数据集保存为Spark数据集的Ignite Queue的内容。
目前我们这样做如下。
var array: Array[Row] = Array()
array = igniteQueue.toArray(array)
但是这会将igniteQueue的所有分布式内容作为一个导致溢出异常的数组带到单个边缘节点。
有没有办法将igniteQueue数据作为Spark Dataframe获取?这样就可以分发数据了
提前致谢!!!
答案 0 :(得分:1)
检查IgniteContext & IgniteRDD documentation - 它是Spark-Ignite集成的主要入口点。
由于IgniteRDD是Ignite缓存的实时视图,因此无需从Ignite向Spark应用程序显式加载数据。创建IgniteRDD实例后,可以立即使用所有RDD方法。
例如,以下Scala代码将找到包含单词" Ignite"的所有值:
public class MainActivity extends AppCompatActivity {
ListView mListView;
ArrayList<String> mArrayList;
ArrayAdapter mArrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.listView_id);
mArrayList = new ArrayList();
mArrayList.add("ONE");
mArrayList.add("TWO");
mArrayList.add("THREE");
mArrayAdapter = new ArrayAdapter(getApplicationContext(),
android.R.layout.simple_list_item_single_choice,
mArrayList);
mListView.setAdapter(mArrayAdapter);
/***Save your position **/
int position = 1;//Save your position in Shared preferences or get it from API
mListView.setItemChecked(position, true);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView textView = (CheckedTextView) view;
for (int i = 0; i < mListView.getCount(); i++) {
if (textView != null) {
textView.setTextColor(Color.GREEN);
}
}
mListView.invalidate();
textView = (CheckedTextView) view;
if (textView != null) {
textView.setTextColor(Color.BLUE);
}
}
});
}
}
另外,请检查此Java example