如何将Ignite队列转换为Spark Dataframe?

时间:2017-08-01 05:08:28

标签: apache-spark spark-dataframe ignite

我们需要获取将群集中的大型数据集保存为Spark数据集的Ignite Queue的内容。

目前我们这样做如下。

var array: Array[Row] = Array()
array = igniteQueue.toArray(array)

但是这会将igniteQueue的所有分布式内容作为一个导致溢出异常的数组带到单个边缘节点。

有没有办法将igniteQueue数据作为Spark Dataframe获取?这样就可以分发数据了

提前致谢!!!

1 个答案:

答案 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