I had also same problem to use JdbcRDD in java.
For me, I have written a class in scala to get JdbcRDD, and I call this
instance from java.

for instance, JdbcRDDWrapper.scala like this:

...

import java.sql._
import org.apache.spark.SparkContext
import org.apache.spark.rdd.JdbcRDD
import com.gsshop.polaris.domain.event._

class JdbcRDDWrapper(sc: SparkContext, rowCount: Long, from: Long, to: Long)
 {

  def getItemViewEventJdbcRdd(): JdbcRDD[ItemViewEvent] =
  {
    val sql = "" +
    "SELECT " +
    "    i.ID as id," +
    "    i.ITEM_ID as \"itemViewEvent.itemId\"," +
    "    i.BRAND_ID as \"itemViewEvent.brandId\"," +
    "    i.ITEM_TYPE as \"itemViewEvent.itemType\"," +
    "    i.PROMOTION_ID as \"itemViewEvent.promotionId\"," +
    "    i.PRICE as \"itemViewEvent.price\"," +
    "    i.ITEM_TITLE as \"itemViewEvent.itemTitle\"," +
    "    i.ITEM_DESCRIPTION as \"itemViewEvent.itemDescription\"," +
    "    i.THUMB_NAIL_URL as \"itemViewEvent.thumbnailUrl\"," +
    "    i.LOAD_DATE as loadDate," +
    "    b.EVENT_TYPE as \"itemViewEvent.baseProperties.eventType\"," +
    "    b.TIMESTAMP as \"itemViewEvent.baseProperties.timestamp\"," +
    "    b.URL as \"itemViewEvent.baseProperties.url\"," +
    "    b.REFERER as \"itemViewEvent.baseProperties.referer\"," +
    "    b.UID as \"itemViewEvent.baseProperties.uid\"," +
    "    b.PCID as \"itemViewEvent.baseProperties.pcid\"," +
    "    b.SERVICE_ID as \"itemViewEvent.baseProperties.serviceId\"," +
    "    b.VERSION as \"itemViewEvent.baseProperties.version\"," +
    "    b.DEVICE_TYPE as \"itemViewEvent.baseProperties.deviceType\"," +
    "    b.DOMAIN as \"itemViewEvent.baseProperties.domain\"," +
    "    b.SITE as \"itemViewEvent.baseProperties.site\" " +
    "FROM ITEM_VIEW_EVENT AS i " +
    "INNER JOIN BASE_PROPERTIES AS b " +
    "ON i.ID = b.EVENT_ID " +
    "WHERE b.TIMESTAMP != ? AND " + from +
" <= b.TIMESTAMP AND b.TIMESTAMP < " + to + " LIMIT ? "

    val rdd = new JdbcRDD(
      sc,
      () => {
        Class.forName("org.apache.phoenix.jdbc.PhoenixDriver")
        DriverManager.getConnection("jdbc:phoenix:xxxxxx:/hbase-unsecure")
      },
      sql,
      0, rowCount, 5,
      (rs: ResultSet) => {
        val baseProperties = new BaseProperties()
        baseProperties.setEventType(rs.getString(
"itemViewEvent.baseProperties.eventType"))
        baseProperties.setTimestamp(rs.getLong(
"itemViewEvent.baseProperties.timestamp"))
        baseProperties.setUrl(rs.getString(
"itemViewEvent.baseProperties.url"))
        baseProperties.setReferer(rs.getString(
"itemViewEvent.baseProperties.referer"))
        baseProperties.setUid(rs.getString(
"itemViewEvent.baseProperties.uid"))
        baseProperties.setPcid(rs.getString(
"itemViewEvent.baseProperties.pcid"))
        baseProperties.setServiceId(rs.getString(
"itemViewEvent.baseProperties.serviceId"))
        baseProperties.setVersion(rs.getString(
"itemViewEvent.baseProperties.version"))
        baseProperties.setDeviceType(rs.getString(
"itemViewEvent.baseProperties.deviceType"))
        baseProperties.setDomain(rs.getString(
"itemViewEvent.baseProperties.domain"))
        baseProperties.setSite(rs.getString(
"itemViewEvent.baseProperties.site"))

        val itemViewEvent = new ItemViewEvent()
        itemViewEvent.setItemId(rs.getString("itemViewEvent.itemId"))
        itemViewEvent.setBrandId(rs.getString("itemViewEvent.brandId"))
        itemViewEvent.setItemType(rs.getString("itemViewEvent.itemType"))
        itemViewEvent.setPromotionId(rs.getString(
"itemViewEvent.promotionId"))
        itemViewEvent.setPrice(rs.getLong("itemViewEvent.price"))
        itemViewEvent.setItemTitle(rs.getString("itemViewEvent.itemTitle"))
        itemViewEvent.setItemDescription(rs.getString(
"itemViewEvent.itemDescription"))
        itemViewEvent.setThumbnailUrl(rs.getString(
"itemViewEvent.thumbnailUrl"))
        itemViewEvent.setBaseProperties(baseProperties)


        itemViewEvent
      })

    rdd
  }

}

and from java, JdbcRdd can be received:

import scala.reflect.ClassManifestFactory$;

...
JdbcRDD<ItemViewEvent> jdbcRddItemViewEvent = new
JdbcRDDWrapper(JavaSparkContext.toSparkContext(ctx), rowCountItemViewEvent,
fromTime, toTime).getItemViewEventJdbcRdd();
JavaRDD<ItemViewEvent> javaRddItemViewEvent =
JavaRDD.fromRDD(jdbcRddItemViewEvent,
ClassManifestFactory$.MODULE$.fromClass(ItemViewEvent.class));


- Kidong.





2014-11-19 8:58 GMT+09:00 sparkling [via Apache Spark User List] <
ml-node+s1001560n19233...@n3.nabble.com>:

> Hi,
>
> Are there any examples of using JdbcRDD in java available?
>
> Its not clear what is the last argument in this example (
> https://github.com/apache/spark/blob/master/core/src/test/scala/org/apache/spark/rdd/JdbcRDDSuite.scala
> ):
>
> sc = new SparkContext("local", "test")
> val rdd = new JdbcRDD(
> sc,
> () => { DriverManager.getConnection("jdbc:derby:target/JdbcRDDSuiteDb") },
> "SELECT DATA FROM FOO WHERE ? <= ID AND ID <= ?",
> 1, 100, 3,
> (r: ResultSet) => { r.getInt(1) }
> ).cache()
>
> Thanks
>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
> http://apache-spark-user-list.1001560.n3.nabble.com/JdbcRDD-tp19233.html
>  To unsubscribe from Apache Spark User List, click here
> <http://apache-spark-user-list.1001560.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=1&code=bXlraWRvbmdAZ21haWwuY29tfDF8LTU1MTIyOTc5NQ==>
> .
> NAML
> <http://apache-spark-user-list.1001560.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: 
http://apache-spark-user-list.1001560.n3.nabble.com/JdbcRDD-tp19233p19235.html
Sent from the Apache Spark User List mailing list archive at Nabble.com.

Reply via email to