001package org.kepler.spark.actor;
002
003import org.apache.spark.sql.SQLContext;
004
005import ptolemy.kernel.CompositeEntity;
006import ptolemy.kernel.util.IllegalActionException;
007import ptolemy.kernel.util.NameDuplicationException;
008
009/* 
010 * Author: Dylan Uys
011 * Class to be extended by all actors requiring a SQLContext
012 */
013public abstract class SparkSQLActor extends SparkBaseActor {
014
015    public SparkSQLActor(CompositeEntity container, String name)
016            throws IllegalActionException, NameDuplicationException {
017        super(container, name);
018    }
019    
020    
021    @Override
022    public void preinitialize() throws IllegalActionException {
023        
024        super.preinitialize();
025        
026        if (null != _context) {
027                // initialize a SQLContext with the JavaSparkContext that was initialized
028                // in SparkBaseActor's preinitialize()
029            _sqlContext = new org.apache.spark.sql.SQLContext(_context);
030        } else {
031                // throw an excpetion if SparkBaseActor failed to create a JavaSparkContext
032                throw new IllegalActionException(this, "No SparkContext to create a SQLContext with");
033        }
034        
035    }
036    
037    protected SQLContext _sqlContext;
038
039}